Add on-watch track listing
This commit is contained in:
1 parent
5507ef52ea
commit
1f8d19ed3a
3 files changed
+45
-13
No files matched your search
+33
-5
@@ -13,6 +13,9 @@ var NavScope = Object.freeze({
|
||||
|
||||
var cfg = JSON.parse(localStorage.getItem('clay-settings'));
|
||||
var lookupMap = new Map();
|
||||
var jfIdToSeqIdMap = new Map();
|
||||
var allJfIds = [];
|
||||
var currentArtist = null;
|
||||
|
||||
Pebble.addEventListener("ready", function () {
|
||||
// store cache of library info from Jellyfin
|
||||
@@ -36,7 +39,9 @@ Pebble.addEventListener("ready", function () {
|
||||
|
||||
// format response for jellyPod
|
||||
//// build lookupMap
|
||||
let lastAlbumInfo = {AlbumArtist: "", AlbumName: "", AlbumYear: 0};
|
||||
let lastAlbumInfo = { AlbumArtist: "", AlbumName: "", AlbumYear: 0 };
|
||||
let currentSeqId = 0;
|
||||
allJfIds = [] // ensure blank
|
||||
for (const track of libObj.Items) {
|
||||
if (!track.Name) continue;
|
||||
|
||||
@@ -65,6 +70,9 @@ Pebble.addEventListener("ready", function () {
|
||||
TrackName: track.Name,
|
||||
JfId: track.Id
|
||||
});
|
||||
jfIdToSeqIdMap.set(track.Id, currentSeqId);
|
||||
allJfIds.push(track.Id);
|
||||
currentSeqId++;
|
||||
|
||||
// consider the album to have changed if the album name OR artist changed
|
||||
if (lastAlbumInfo.AlbumArtist !== albumArtist || lastAlbumInfo.AlbumName !== albumName) {
|
||||
@@ -98,15 +106,17 @@ Pebble.addEventListener("appmessage", function (dict) {
|
||||
//console.log("expected NAV_SCOPE key", keys.BIDIR_MENU_NAV_SCOPE);
|
||||
|
||||
const scope = payloadGet(dict.payload, "BIDIR_MENU_NAV_SCOPE");
|
||||
const subscope = payloadGet(dict.payload, "OUT_MENU_NAV_SUBSCOPE");
|
||||
|
||||
if (scope) {
|
||||
let vanityList;
|
||||
let seqIdList = [];
|
||||
switch (scope) {
|
||||
case NavScope.NAV_SCOPE_SEARCH: { // search
|
||||
case NavScope.NAV_SCOPE_SEARCH: {
|
||||
vanityList = Array.from(lookupMap.keys());
|
||||
break;
|
||||
}
|
||||
case NavScope.NAV_SCOPE_ARTISTS: { // artists
|
||||
const subscope = payloadGet(dict.payload, "OUT_MENU_NAV_SUBSCOPE");
|
||||
case NavScope.NAV_SCOPE_ARTISTS: {
|
||||
if (subscope) {
|
||||
// allow filtering by starting character
|
||||
vanityList = Array.from(lookupMap.get(subscope).keys());
|
||||
@@ -115,14 +125,32 @@ Pebble.addEventListener("appmessage", function (dict) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NavScope.NAV_SCOPE_ALBUMS: {
|
||||
currentArtist = subscope;
|
||||
const artistToAlbumsMap = lookupMap.get(Array.from(subscope)[0].toUpperCase());
|
||||
vanityList = Array.from(artistToAlbumsMap.get(subscope).keys());
|
||||
break;
|
||||
}
|
||||
case NavScope.NAV_SCOPE_ALBUM_TRACKS: {
|
||||
const albumToTracksMap = lookupMap.get(Array.from(currentArtist)[0].toUpperCase()).get(currentArtist);
|
||||
vanityList = albumToTracksMap.get(subscope).map((track) => track.TrackName);
|
||||
const jfIdList = albumToTracksMap.get(subscope).map((track) => track.JfId);
|
||||
for (const jfId of jfIdList) {
|
||||
seqIdList.push(jfIdToSeqIdMap.get(jfId));
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
}
|
||||
const outDict = {};
|
||||
for (let i = 0; i < vanityList.length; i++) {
|
||||
outDict[keys.IN_VANITY_LIST + i] = vanityList[i];
|
||||
outDict[keys.BIDIR_MENU_NAV_SCOPE] = scope;
|
||||
if (scope === NavScope.NAV_SCOPE_ALBUM_TRACKS) {
|
||||
outDict[keys.IN_SEQ_ID_LIST + i] = seqIdList[i];
|
||||
}
|
||||
}
|
||||
outDict[keys.BIDIR_MENU_NAV_SCOPE] = scope;
|
||||
Pebble.sendAppMessage(outDict);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user