updated dependencies, fixed sorting

This commit is contained in:
2025-03-26 08:36:20 +01:00
parent 66f09cf5a3
commit 7296582b0d
6 changed files with 766 additions and 666 deletions

View File

@ -65,7 +65,7 @@ Set up NVM:
``` ```
$ cd $ cd
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh $ curl https://raw.githubusercontent.com/nvm-sh/nvm/refs/heads/master/install.sh | bash
$ source ~/.nvm/nvm.sh $ source ~/.nvm/nvm.sh
$ nvm install --lts $ nvm install --lts
``` ```

1388
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-node": "^5.0.0", "@sveltejs/adapter-node": "^5.0.0",
"@sveltejs/kit": "^2.7.0", "@sveltejs/kit": "^2.7.0",
"@sveltejs/vite-plugin-svelte": "^4.0.0", "@sveltejs/vite-plugin-svelte": "^5.0.0",
"@types/node": "^22.6.1", "@types/node": "^22.6.1",
"@types/sqlite3": "^3.0.0", "@types/sqlite3": "^3.0.0",
"@types/ws": "^8.5.0", "@types/ws": "^8.5.0",
@ -24,15 +24,15 @@
"@typescript-eslint/parser": "^8.0.0", "@typescript-eslint/parser": "^8.0.0",
"@zerodevx/svelte-toast": "^0.9.3", "@zerodevx/svelte-toast": "^0.9.3",
"eslint": "^9.11.1", "eslint": "^9.11.1",
"eslint-config-prettier": "^9.0.0", "eslint-config-prettier": "^10.0.0",
"eslint-plugin-svelte": "^2.45.1", "eslint-plugin-svelte": "^3.0.0",
"prettier": "^3.1.0", "prettier": "^3.1.0",
"prettier-plugin-svelte": "^3.2.6", "prettier-plugin-svelte": "^3.2.6",
"svelte": "^5", "svelte": "^5",
"svelte-check": "^4.0.0", "svelte-check": "^4.0.0",
"tslib": "^2.0.0", "tslib": "^2.0.0",
"typescript": "^5.0.0", "typescript": "^5.0.0",
"vite": "^5.0.0" "vite": "^6.0.0"
}, },
"type": "module", "type": "module",
"dependencies": { "dependencies": {

View File

@ -16,7 +16,7 @@
['jpg', 99], ['jpg', 99],
['jpeg', 99] ['jpeg', 99]
]); ]);
const resizedAvatars = (account.resizedAvatars ?? []).sort((a, b) => { const resizedAvatars = (account.resizedAvatars ?? []).toSorted((a, b) => {
const extensionA = a.file.split('.').pop() ?? ''; const extensionA = a.file.split('.').pop() ?? '';
const extensionB = b.file.split('.').pop() ?? ''; const extensionB = b.file.split('.').pop() ?? '';
const prioA = formatPriority.get(extensionA) ?? 3; const prioA = formatPriority.get(extensionA) ?? 3;

View File

@ -65,7 +65,7 @@
['jpg', 99], ['jpg', 99],
['jpeg', 99] ['jpeg', 99]
]); ]);
const thumbs = (song.resizedThumbnails ?? []).sort((a, b) => { const thumbs = (song.resizedThumbnails ?? []).toSorted((a, b) => {
const extensionA = a.file.split('.').pop() ?? ''; const extensionA = a.file.split('.').pop() ?? '';
const extensionB = b.file.split('.').pop() ?? ''; const extensionB = b.file.split('.').pop() ?? '';
const prioA = formatPriority.get(extensionA) ?? 3; const prioA = formatPriority.get(extensionA) ?? 3;

View File

@ -17,6 +17,7 @@
} }
let { data = $bindable() }: Props = $props(); let { data = $bindable() }: Props = $props();
let posts: Post[] = $state(data.posts);
interface FetchOptions { interface FetchOptions {
since?: string; since?: string;
@ -44,11 +45,11 @@
*/ */
function edgeFly(node: Element, opts: EdgeFlyParams) { function edgeFly(node: Element, opts: EdgeFlyParams) {
const createdAt = new Date(opts.created_at).getTime(); const createdAt = new Date(opts.created_at).getTime();
const diffNewest = Math.abs(new Date(data.posts[0].created_at).getTime() - createdAt); const diffNewest = Math.abs(new Date(posts[0].created_at).getTime() - createdAt);
const oldest = const oldest =
oldestBeforeLastFetch !== null oldestBeforeLastFetch !== null
? oldestBeforeLastFetch ? oldestBeforeLastFetch
: new Date(data.posts[data.posts.length - 1].created_at).getTime(); : new Date(posts[posts.length - 1].created_at).getTime();
const diffOldest = Math.abs(oldest - createdAt); const diffOldest = Math.abs(oldest - createdAt);
const fromTop = diffNewest <= diffOldest; const fromTop = diffNewest <= diffOldest;
@ -83,15 +84,15 @@
function refresh() { function refresh() {
let filter: FetchOptions = {}; let filter: FetchOptions = {};
if (data.posts.length > 0) { if (posts.length > 0) {
filter = { since: data.posts[0].created_at }; filter = { since: posts[0].created_at };
} }
fetchPosts(filter) fetchPosts(filter)
.then((resp) => { .then((resp) => {
if (resp.length > 0) { if (resp.length > 0) {
// Prepend new posts, filter dupes // Prepend new posts, filter dupes
// There shouldn't be any duplicates, but better be safe than sorry // There shouldn't be any duplicates, but better be safe than sorry
data.posts = filterDuplicates(resp.concat(data.posts)); posts = filterDuplicates(resp.concat(posts));
} }
}) })
.catch((e: Error) => { .catch((e: Error) => {
@ -100,8 +101,9 @@
} }
onMount(async () => { onMount(async () => {
if (data.posts.length > 0) { posts = data.posts;
oldestBeforeLastFetch = new Date(data.posts[data.posts.length - 1].created_at).getTime(); if (posts.length > 0) {
oldestBeforeLastFetch = new Date(posts[posts.length - 1].created_at).getTime();
} }
interval = setInterval(refresh, refreshInterval); interval = setInterval(refresh, refreshInterval);
@ -125,8 +127,8 @@
function loadOlderPosts() { function loadOlderPosts() {
loadingOlderPosts = true; loadingOlderPosts = true;
const filter: FetchOptions = { count: 20 }; const filter: FetchOptions = { count: 20 };
if (data.posts.length > 0) { if (posts.length > 0) {
const before = data.posts[data.posts.length - 1].created_at; const before = posts[posts.length - 1].created_at;
filter.before = before; filter.before = before;
oldestBeforeLastFetch = new Date(before).getTime(); oldestBeforeLastFetch = new Date(before).getTime();
} }
@ -136,7 +138,7 @@
if (resp.length > 0) { if (resp.length > 0) {
// Append old posts, filter dupes // Append old posts, filter dupes
// There shouldn't be any duplicates, but better be safe than sorry // There shouldn't be any duplicates, but better be safe than sorry
data.posts = filterDuplicates(data.posts.concat(resp)); posts = filterDuplicates(posts.concat(resp));
// If we got less than we expected, there are no older posts available // If we got less than we expected, there are no older posts available
moreOlderPostsAvailable = resp.length >= (filter.count ?? 20); moreOlderPostsAvailable = resp.length >= (filter.count ?? 20);
} else { } else {
@ -158,10 +160,10 @@
<div class="wrapper"> <div class="wrapper">
<div></div> <div></div>
<div class="posts"> <div class="posts">
{#if data.posts.length === 0} {#if posts.length === 0}
Sorry, no posts recommending music have been found yet Sorry, no posts recommending music have been found yet
{/if} {/if}
{#each data.posts as post (post.url)} {#each posts as post (post.url)}
<div <div
class="post" class="post"
transition:edgeFly|global={{ transition:edgeFly|global={{