diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js b/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js index e2fb3f9..70c105d 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js @@ -197,11 +197,18 @@ function PlaylistMenuButton({ userId, lists, reload, onPlayQueue, onSync, cached // playlist subkey existed — and an AES handle is non-extractable, so // there is nothing to derive it from. One sign-in with the passphrase // fixes it for good; a code on screen does not say that. - say(r && r.ok - ? `${t('playlists.synced')} (${r.pushed || 0}↑ ${r.pulled || 0}↓)` - : (why === 'no_key' - ? t('playlists.err_no_key') - : `${t('playlists.sync_failed')}: ${why}`)); + // A playlist too large to send is reported ahead of the totals. The + // sync itself worked — everything else moved — so `ok` is true, and + // saying "synced" while one playlist silently stayed behind would be + // the lie this whole report exists to stop. + const big = (r && r.tooLarge) || []; + say(big.length + ? t('playlists.err_too_large', { name: big[0], n: 1000 }) + : (r && r.ok + ? `${t('playlists.synced')} (${r.pushed || 0}↑ ${r.pulled || 0}↓)` + : (why === 'no_key' + ? t('playlists.err_no_key') + : `${t('playlists.sync_failed')}: ${why}`))); }, }, ]); |