Skip to content

Commit

Permalink
Added check for null JSON node. Renamed vars.
Browse files Browse the repository at this point in the history
  • Loading branch information
technosf committed Sep 29, 2024
1 parent 16f3cb0 commit 2e598ac
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 18 deletions.
26 changes: 10 additions & 16 deletions src/Models/StationStore.vala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/**
StationStore
Store and retrieve a collection of stations in a JSON file
Store and retrieve a collection of stations in a JSON file, i.e. favorites
Uses libgee for data structures.
*/
Expand All @@ -17,16 +17,16 @@ namespace Tuner.Model {

public class StationStore : Object {
private ArrayList<Station> _store;
private File _data_file;
private File _favorites_file;

public StationStore (string data_path) {
public StationStore (string favorites_path) {
Object ();

_store = new ArrayList<Station> ();
_data_file = File.new_for_path (data_path);
_favorites_file = File.new_for_path (favorites_path);
ensure ();
load ();
debug (@"store initialized in path $data_path");
debug (@"store initialized in path $favorites_path");
}

public void add (Station station) {
Expand All @@ -48,7 +48,7 @@ public class StationStore : Object {
// Non-racy approach is to try to create the file first
// and ignore errors if it already exists
try {
var df = _data_file.create (FileCreateFlags.PRIVATE);
var df = _favorites_file.create (FileCreateFlags.PRIVATE);
df.close ();
debug (@"store created");
} catch (Error e) {
Expand All @@ -61,7 +61,7 @@ public class StationStore : Object {
Json.Parser parser = new Json.Parser ();

try {
var stream = _data_file.read ();
var stream = _favorites_file.read ();
parser.load_from_stream (stream);
stream.close ();
} catch (Error e) {
Expand All @@ -70,13 +70,7 @@ public class StationStore : Object {

Json.Node? node = parser.get_root ();

if ( node == null )
{
debug ("store: unable to load data, root is null");
return; // FIXME What should be done when root node is null?
}

debug ("store: root is not null");
if ( node == null ) return; // No favorites store

Json.Array array = node.get_array (); // Json-CRITICAL **: 21:02:51.821: json_node_get_array: assertion 'JSON_NODE_IS_VALID (node)' failed
array.foreach_element ((a, i, elem) => { // json_array_foreach_element: assertion 'array != NULL' failed
Expand All @@ -102,8 +96,8 @@ public class StationStore : Object {
var data = serialize ();

try {
_data_file.delete ();
var stream = _data_file.create (
_favorites_file.delete ();
var stream = _favorites_file.create (
FileCreateFlags.REPLACE_DESTINATION | FileCreateFlags.PRIVATE
);
var s = new DataOutputStream (stream);
Expand Down
4 changes: 2 additions & 2 deletions src/Widgets/Window.vala
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ public class Tuner.Window : Gtk.ApplicationWindow {
var stack = new Gtk.Stack ();
stack.transition_type = Gtk.StackTransitionType.CROSSFADE;

var data_file = Path.build_filename (Application.instance.data_dir, "favorites.json");
var store = new Model.StationStore (data_file);
var favorites_file = Path.build_filename (Application.instance.data_dir, "favorites.json");
var store = new Model.StationStore (favorites_file);
_directory = new DirectoryController (store);

var primary_box = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);
Expand Down

0 comments on commit 2e598ac

Please sign in to comment.