linting, remove docs folder

This commit is contained in:
Violet Caulfield
2025-04-11 07:15:52 -05:00
parent f3ebfd171f
commit 412c871c57
35 changed files with 43 additions and 134 deletions

View File

@@ -18,4 +18,9 @@ module.exports = {
'@typescript-eslint/no-explicit-any': 'error', // Disallow usage of any
'@typescript-eslint/explicit-module-boundary-types': 'error', // Ensure types are explicitly declared
},
settings: {
"react": {
"version": "detect"
}
}
};

View File

@@ -1,2 +1,2 @@
npx lint-staged
# npx lint-staged
npm run test

View File

@@ -3,7 +3,7 @@ import { JellyfinInfo } from "../../info";
import _ from "lodash";
export function createApi(serverUrl?: string, username?: string, password?: string, accessToken?: string): Promise<Api> {
return new Promise(async (resolve, reject) => {
return new Promise((resolve, reject) => {
if (_.isUndefined(serverUrl)) {
console.info("Server Url doesn't exist yet")
@@ -21,15 +21,14 @@ export function createApi(serverUrl?: string, username?: string, password?: stri
console.info("Creating public API for server url")
return resolve(JellyfinInfo.createApi(serverUrl));
}
JellyfinInfo.createApi(serverUrl).authenticateUserByName(username!, password)
.then(({ data }) => {
if (data.AccessToken)
return resolve(JellyfinInfo.createApi(serverUrl, data.AccessToken));
console.log("Signing into Jellyfin")
let authResult = await JellyfinInfo.createApi(serverUrl).authenticateUserByName(username!, password);
if (authResult.data.AccessToken) {
console.info("Signed into Jellyfin successfully")
return resolve(JellyfinInfo.createApi(serverUrl, authResult.data.AccessToken));
}
return reject("Unable to sign in");
else
return reject("Unable to sign in");
});
});
}

View File

@@ -8,7 +8,7 @@ export function fetchItemImage(itemId: string, imageType: ImageType, width: numb
return new Promise<string>(async (resolve, reject) => {
console.debug("Fetching item image");
if (!!!Client.api)
if (!Client.api)
return reject("Client instance not set")
else
getImageApi(Client.api)

View File

@@ -9,7 +9,7 @@ export function fetchMusicLibraries(): Promise<BaseItemDto[]> {
return new Promise(async (resolve, reject) => {
console.debug("Fetching music libraries from Jellyfin");
let libraries = await getItemsApi(Client.api!).getItems({
const libraries = await getItemsApi(Client.api!).getItems({
includeItemTypes: ['CollectionFolder']
});
@@ -18,7 +18,7 @@ export function fetchMusicLibraries(): Promise<BaseItemDto[]> {
return reject("No libraries found on Jellyfin");
}
let musicLibraries = libraries.data.Items!.filter(library =>
const musicLibraries = libraries.data.Items!.filter(library =>
library.CollectionType == 'music');
return resolve(musicLibraries);
@@ -29,7 +29,7 @@ export function fetchPlaylistLibrary(): Promise<BaseItemDto> {
return new Promise(async (resolve, reject) => {
console.debug("Fetching playlist library from Jellyfin");
let libraries = await getItemsApi(Client.api!).getItems({
const libraries = await getItemsApi(Client.api!).getItems({
includeItemTypes: ['ManualPlaylistsFolder'],
excludeItemTypes: ['CollectionFolder']
});
@@ -41,7 +41,7 @@ export function fetchPlaylistLibrary(): Promise<BaseItemDto> {
console.debug("Playlist libraries", libraries.data.Items!)
let playlistLibrary = libraries.data.Items!.filter(library =>
const playlistLibrary = libraries.data.Items!.filter(library =>
library.CollectionType == 'playlists'
)[0];

View File

@@ -7,10 +7,10 @@ import { getUserLibraryApi } from "@jellyfin/sdk/lib/utils/api";
export function fetchRecentlyAdded(limit: number = QueryConfig.limits.recents, offset?: number | undefined) : Promise<BaseItemDto[]> {
return new Promise(async (resolve, reject) => {
if (!!!Client.api)
if (!Client.api)
return reject("Client not set")
if (!!!Client.library)
if (!Client.library)
return reject("Library not set")
else
getUserLibraryApi(Client.api)

View File

@@ -36,7 +36,7 @@ export default function Avatar({
return (
<YStack alignItems="center" marginHorizontal={10}>
<TamaguiAvatar
borderRadius={!!!props.circular ? 4 : 'unset'}
borderRadius={!props.circular ? 4 : 'unset'}
{...props}
>
<TamaguiAvatar.Image src={data} />

View File

@@ -165,7 +165,7 @@ export default function Track({
<Icon
name={showRemove ? "close" : "dots-horizontal"}
onPress={() => {
if (!!showRemove) {
if (showRemove) {
if (onRemove)
onRemove()
}

View File

@@ -41,7 +41,7 @@ export default function IconButton({
>
<Icon
large={largeIcon}
small={!!!largeIcon}
small={!largeIcon}
name={name}
color={"$color"}
/>

View File

@@ -40,7 +40,7 @@ export default function IconCard({
color={getTokens().color.purpleDark.val}
name={name}
large={largeIcon}
small={!!!largeIcon}
small={!largeIcon}
/>
</Card.Header>
<Card.Footer padded>

View File

@@ -27,7 +27,7 @@ export default function Icon({
}) : React.JSX.Element {
const theme = useTheme();
let size = extraLarge? extraLargeSize : large ? largeSize : small ? smallSize : regularSize
const size = extraLarge? extraLargeSize : large ? largeSize : small ? smallSize : regularSize
return (
<MaterialCommunityIcons

View File

@@ -7,10 +7,10 @@ export function RunTimeSeconds({ children }: { children: number }) : React.JSX.E
}
export function RunTimeTicks({ children } : { children?: number | null | undefined }) : React.JSX.Element {
if (!!!children)
if (!children)
return <Text>0:00</Text>
let time = calculateRunTimeFromTicks(children);
const time = calculateRunTimeFromTicks(children);
return (
<Text

View File

@@ -41,13 +41,13 @@ export default function TrackOptions({
const { data: album, isSuccess: albumFetchSuccess } = useQuery({
queryKey: [QueryKeys.Item, track.AlbumId!],
queryFn: () => fetchItem(track.AlbumId!)
});;
});
const { data: playlists, isPending : playlistsFetchPending, isSuccess: playlistsFetchSuccess, refetch } = useQuery({
queryKey: [QueryKeys.UserPlaylists],
queryFn: () => fetchUserPlaylists()
});
;
const { useAddToQueue } = usePlayerContext();

View File

@@ -6,7 +6,7 @@ interface CategoryRoute {
params?: {
query: QueryKeys
};
};
}
const Categories : CategoryRoute[] = [
{ name: "Artists", iconName: "microphone-variant", params: { query: QueryKeys.FavoriteArtists } },

View File

@@ -39,17 +39,17 @@ export default function ServerAddress({
console.debug(`Connecting to ${useHttps ? https : http}${serverAddress}`);
let jellyfin = new Jellyfin(JellyfinInfo);
const jellyfin = new Jellyfin(JellyfinInfo);
if (!!!serverAddress)
if (!serverAddress)
throw new Error("Server address was empty");
let api = jellyfin.createApi(`${useHttps ? https : http}${serverAddress}`);
const api = jellyfin.createApi(`${useHttps ? https : http}${serverAddress}`);
return getSystemApi(api).getPublicSystemInfo();
},
onSuccess: (publicSystemInfoResponse) => {
if (!!!publicSystemInfoResponse.data.Version)
if (!publicSystemInfoResponse.data.Version)
throw new Error("Jellyfin instance did not respond");
console.log(`Connected to Jellyfin ${publicSystemInfoResponse.data.Version!}`);

View File

@@ -24,7 +24,7 @@ export default function ServerLibrary(): React.JSX.Element {
const { data : libraries, isError, isPending, isSuccess, refetch } = useQuery({
queryKey: [QueryKeys.UserViews],
queryFn: () => fetchUserViews()
});;
});
useEffect(() => {
if (!isPending && isSuccess)
@@ -70,7 +70,7 @@ export default function ServerLibrary(): React.JSX.Element {
<Text>Unable to load libraries</Text>
)}
<Button disabled={!!!libraryId}
<Button disabled={!libraryId}
onPress={() => {
Client.setLibrary({
musicLibraryId: libraryId!,

View File

@@ -6,7 +6,7 @@ interface CategoryRoute {
params?: {
query: QueryKeys
};
};
}
const Categories : CategoryRoute[] = [
{ name: "Account", iconName: "account-key-outline" },

View File

@@ -6,8 +6,8 @@ import { CarPlayInterface, NowPlayingTemplate, TabBarTemplate } from "react-nati
// 'react-native-carplay' has also been disabled for android builds in react-native.config.js
const CarPlay = Platform.OS === 'ios' ? require('react-native-carplay').CarPlay as CarPlayInterface : null;
const CarPlayNavigation = !!CarPlay ? require('./CarPlay/Navigation') : null;
const CarPlayNowPlaying = !!CarPlay ? require('./CarPlay/NowPlaying') : null
const CarPlayNavigation = CarPlay ? require('./CarPlay/Navigation') : null;
const CarPlayNowPlaying = CarPlay ? require('./CarPlay/NowPlaying') : null
interface JellifyContext {
loggedIn: boolean;

View File

@@ -1,16 +0,0 @@
{
"files": {
"main.css": "/jellify/static/css/main.f855e6bc.css",
"main.js": "/jellify/static/js/main.aacb5a88.js",
"static/js/453.9e651822.chunk.js": "/jellify/static/js/453.9e651822.chunk.js",
"static/media/logo.svg": "/jellify/static/media/logo.6ce24c58023cc2f8fd88fe9d219db6c6.svg",
"index.html": "/jellify/index.html",
"main.f855e6bc.css.map": "/jellify/static/css/main.f855e6bc.css.map",
"main.aacb5a88.js.map": "/jellify/static/js/main.aacb5a88.js.map",
"453.9e651822.chunk.js.map": "/jellify/static/js/453.9e651822.chunk.js.map"
},
"entrypoints": [
"static/css/main.f855e6bc.css",
"static/js/main.aacb5a88.js"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1 +0,0 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/jellify/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/jellify/logo192.png"/><link rel="manifest" href="/jellify/manifest.json"/><title>React App</title><script defer="defer" src="/jellify/static/js/main.aacb5a88.js"></script><link href="/jellify/static/css/main.f855e6bc.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -1,25 +0,0 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

View File

@@ -1,3 +0,0 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

View File

@@ -1,2 +0,0 @@
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.f855e6bc.css.map*/

View File

@@ -1 +0,0 @@
{"version":3,"file":"static/css/main.f855e6bc.css","mappings":"AAAA,KAKE,kCAAmC,CACnC,iCAAkC,CAJlC,mIAEY,CAHZ,QAMF,CAEA,KACE,uEAEF,CCZA,KACE,iBACF,CAEA,UACE,aAAc,CACd,mBACF,CAEA,8CACE,UACE,2CACF,CACF,CAEA,YAKE,kBAAmB,CAJnB,wBAAyB,CAOzB,UAAY,CALZ,YAAa,CACb,qBAAsB,CAGtB,4BAA6B,CAD7B,sBAAuB,CAJvB,gBAOF,CAEA,UACE,aACF,CAEA,yBACE,GACE,sBACF,CACA,GACE,uBACF,CACF","sources":["index.css","App.css"],"sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n",".App {\n text-align: center;\n}\n\n.App-logo {\n height: 40vmin;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .App-logo {\n animation: App-logo-spin infinite 20s linear;\n }\n}\n\n.App-header {\n background-color: #282c34;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: calc(10px + 2vmin);\n color: white;\n}\n\n.App-link {\n color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n"],"names":[],"sourceRoot":""}

View File

@@ -1,2 +0,0 @@
"use strict";(self.webpackChunkjellify_pages=self.webpackChunkjellify_pages||[]).push([[453],{453:(e,t,n)=>{n.r(t),n.d(t,{getCLS:()=>y,getFCP:()=>g,getFID:()=>C,getLCP:()=>P,getTTFB:()=>D});var i,r,a,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v2-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},f=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},m=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},v=-1,p=function(){return"hidden"===document.visibilityState?0:1/0},d=function(){f((function(e){var t=e.timeStamp;v=t}),!0)},l=function(){return v<0&&(v=p(),d(),s((function(){setTimeout((function(){v=p(),d()}),0)}))),{get firstHiddenTime(){return v}}},g=function(e,t){var n,i=l(),r=u("FCP"),a=function(e){"first-contentful-paint"===e.name&&(f&&f.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=e.startTime,r.entries.push(e),n(!0)))},o=window.performance&&performance.getEntriesByName&&performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",a);(o||f)&&(n=m(e,r,t),o&&a(o),s((function(i){r=u("FCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,n(!0)}))}))})))},h=!1,T=-1,y=function(e,t){h||(g((function(e){T=e.value})),h=!0);var n,i=function(t){T>-1&&e(t)},r=u("CLS",0),a=0,o=[],v=function(e){if(!e.hadRecentInput){var t=o[0],i=o[o.length-1];a&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(a+=e.value,o.push(e)):(a=e.value,o=[e]),a>r.value&&(r.value=a,r.entries=o,n())}},p=c("layout-shift",v);p&&(n=m(i,r,t),f((function(){p.takeRecords().map(v),n(!0)})),s((function(){a=0,T=-1,r=u("CLS",0),n=m(i,r,t)})))},E={passive:!0,capture:!0},w=new Date,L=function(e,t){i||(i=t,r=e,a=new Date,F(removeEventListener),S())},S=function(){if(r>=0&&r<a-w){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+r};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){L(e,t),r()},i=function(){r()},r=function(){removeEventListener("pointerup",n,E),removeEventListener("pointercancel",i,E)};addEventListener("pointerup",n,E),addEventListener("pointercancel",i,E)}(t,e):L(t,e)}},F=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,E)}))},C=function(e,t){var n,a=l(),v=u("FID"),p=function(e){e.startTime<a.firstHiddenTime&&(v.value=e.processingStart-e.startTime,v.entries.push(e),n(!0))},d=c("first-input",p);n=m(e,v,t),d&&f((function(){d.takeRecords().map(p),d.disconnect()}),!0),d&&s((function(){var a;v=u("FID"),n=m(e,v,t),o=[],r=-1,i=null,F(addEventListener),a=p,o.push(a),S()}))},k={},P=function(e,t){var n,i=l(),r=u("LCP"),a=function(e){var t=e.startTime;t<i.firstHiddenTime&&(r.value=t,r.entries.push(e),n())},o=c("largest-contentful-paint",a);if(o){n=m(e,r,t);var v=function(){k[r.id]||(o.takeRecords().map(a),o.disconnect(),k[r.id]=!0,n(!0))};["keydown","click"].forEach((function(e){addEventListener(e,v,{once:!0,capture:!0})})),f(v,!0),s((function(i){r=u("LCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,k[r.id]=!0,n(!0)}))}))}))}},D=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0||n.value>performance.now())return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("load",(function(){return setTimeout(t,0)}))}}}]);
//# sourceMappingURL=453.9e651822.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,39 +0,0 @@
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -57,5 +57,5 @@ export async function handlePlaybackProgressUpdated(sessionId: string, playstate
// PositionTicks: convertSecondsToRunTimeTicks(progress.position)
// }
// });
};
}
}

View File

@@ -307,7 +307,7 @@ const PlayerContextInitializer = () => {
await useUpdateOptions(nowPlayingIsFavorite);
} else if (!!!activeTrack) {
} else if (!activeTrack) {
setNowPlaying(undefined)
setNowPlayingIsFavorite(false);
} else {