diff --git a/src/c/jellyPod.c b/src/c/jellyPod.c index df39b93..58811c6 100644 --- a/src/c/jellyPod.c +++ b/src/c/jellyPod.c @@ -76,8 +76,8 @@ static void outbox_failed_handler(DictionaryIterator *iter, AppMessageResult rea static void inbox_received_handler(DictionaryIterator *iter, void *context) { Tuple *t_ready = dict_find(iter, MESSAGE_KEY_PKJS_READY); if (t_ready) { - s_pkjs_ready = true; - APP_LOG(APP_LOG_LEVEL_DEBUG, "PKJS READY RECEIVED"); + s_pkjs_ready = (bool)t_ready->value->uint8; + APP_LOG(APP_LOG_LEVEL_DEBUG, "PKJS READY STATE CHANGE: %d", s_pkjs_ready); return; } @@ -159,8 +159,6 @@ static void to_pkjs_move_back() { return; } - APP_LOG(APP_LOG_LEVEL_DEBUG, "Current nav scope: %d", s_current_menu_scope); - APP_LOG(APP_LOG_LEVEL_DEBUG, "Using search: %d", s_nav_history.using_search); if ((s_current_menu_scope == NAV_SCOPE_ARTISTS && !s_nav_history.using_search) || s_current_menu_scope == NAV_SCOPE_SEARCH) { // return to main menu s_current_menu_scope = NAV_SCOPE_MAIN; diff --git a/src/pkjs/config.js b/src/pkjs/config.js index b68ae62..50adfd5 100644 --- a/src/pkjs/config.js +++ b/src/pkjs/config.js @@ -28,6 +28,6 @@ module.exports = [ }, { "type": "submit", - "defaultValue": "Save/Sync Library" + "defaultValue": "Sync Library" } ]; diff --git a/src/pkjs/index.js b/src/pkjs/index.js index 84693d2..3df0cff 100644 --- a/src/pkjs/index.js +++ b/src/pkjs/index.js @@ -1,7 +1,7 @@ var Clay = require('@rebble/clay'); var clayConfig = require('./config'); +var clay = new Clay(clayConfig, null, { autoHandleEvents: false }); var keys = require('message_keys'); -new Clay(clayConfig); var NavScope = Object.freeze({ NAV_SCOPE_MAIN: 0, @@ -17,7 +17,15 @@ var jfIdToSeqIdMap = new Map(); var allJfIds = []; var currentArtist = null; -Pebble.addEventListener("ready", function () { +function toggleReadyState(ready) { + const readyDict = {}; + readyDict[keys.PKJS_READY] = ready; + Pebble.sendAppMessage(readyDict); +} + +function syncLibrary() { + toggleReadyState(false); + // store cache of library info from Jellyfin if (cfg.PRIV_BASE_URL && cfg.PRIV_API_KEY && cfg.PRIV_USERNAME) { // get userId from Jellyfin @@ -39,7 +47,8 @@ Pebble.addEventListener("ready", function () { // format response for jellyPod //// build lookupMap - let lastAlbumInfo = { AlbumArtist: "", AlbumName: "", AlbumYear: 0 }; + let lastAlbumInfo = { AlbumArtist: "", AlbumName: ""}; + //let lastAlbumInfo = { AlbumArtist: "", AlbumName: "", AlbumYear: 0 }; // TODO FUTURE USE let currentSeqId = 0; allJfIds = [] // ensure blank for (const track of libObj.Items) { @@ -79,19 +88,38 @@ Pebble.addEventListener("ready", function () { lastAlbumInfo = { AlbumArtist: albumArtist, AlbumName: albumName, - AlbumYear: track.ProductionYear ? track.ProductionYear : 1970 + //AlbumYear: track.ProductionYear ? track.ProductionYear : 1970 // TODO FUTURE USE }; } } //console.log(JSON.stringify(lookupMap, (k, v) => v instanceof Map ? Object.fromEntries(v) : v)); - - const readyDict = {}; - readyDict[keys.PKJS_READY] = 1; - Pebble.sendAppMessage(readyDict); + toggleReadyState(true); }); }); } +} + +Pebble.addEventListener('showConfiguration', function () { + Pebble.openURL(clay.generateUrl()); +}); + +Pebble.addEventListener('webviewclosed', function(e) { + if (!e || !e.response) { return; } + + // persist settings + try { + clay.getSettings(e.response); + } catch (err) { + return; + } + + cfg = JSON.parse(localStorage.getItem('clay-settings')); + syncLibrary() +}); + +Pebble.addEventListener("ready", function () { + toggleReadyState(true); }); // PKJS seems to change its mind on how to index message keys, so this is necessary... :/