a66b8a6541017db98effdea9d57e82ae894747f4
[profile/ivi/cowhide.git] / examples / hoofbeats / javascripts / app / store.js
1 /* vi: set et sw=4 ts=4 si: */
2 (function(app, $) {
3     var Store = function() {
4         this.reset();
5         this.scan();
6     }
7
8     Store.prototype = {
9         reset: function() {
10             this.scanCompleted = false;
11         },
12
13         scan: function() {
14             var self = this;
15
16             if (self.scanCompleted) {
17                 return;
18             }
19
20             console.log("Store.scan: entered.");
21             if (app.library) {
22                 app.library.scan().then(function() {
23                     self.scanCompleted = true;
24                     console.log(
25                         "Store.scan: completed. " +
26                         app.library.size +
27                         " items in the library.");
28                 });
29             } else {
30                 setTimeout(function() {
31                     self.scan();
32                 }, 100);
33             }
34         },
35
36         getMediaItems: function(deferred) {
37             var self = this,
38                 d = deferred || new $.Deferred();
39
40             console.log("Store.getMediaItems: entered.");
41             if (self.scanCompleted) {
42                 console.log("Store.getMediaItems: scan is completed, resolving promise.");
43                 deferred.resolve(app.library.items);
44             } else {
45                 // If the scan is not completed, we must be still scanning.
46                 console.log("Store.getMediaItems: scan still pending. Trying again later.");
47                 setTimeout(function() {
48                     return self.getMediaItems(d);
49                 }, 100);
50             }
51
52             return d.promise();
53         }
54     };
55
56     app.Store = new Store();
57 })(window.Hoofbeats, window.jQuery);