[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Add "Skip This Version" button

Kasper (Oct 8, 2024, 2:13 AM +0200) 7fb91d3b 207a0a44

+37 -7
+1
ferrum-addon/addon.d.ts
··· 186 186 shownPlaylistFolders: Array<string> 187 187 /** Empty is treated as default */ 188 188 columns: Array<string> 189 + skipUpdatingToVersion?: string 189 190 } 190 191 export declare function load_view_options(): ViewOptions 191 192 export declare function save_view_options(viewOptions: ViewOptions): void
+2
src-native/view_options.rs
··· 15 15 pub shown_playlist_folders: Vec<String>, 16 16 /// Empty is treated as default 17 17 pub columns: Vec<String>, 18 + pub skip_updating_to_version: Option<String>, 18 19 } 19 20 impl ViewOptions { 20 21 pub fn load(paths: &Paths) -> ViewOptions { ··· 23 24 Err(_) => ViewOptions { 24 25 shown_playlist_folders: Vec::new(), 25 26 columns: Vec::new(), 27 + skip_updating_to_version: None, 26 28 }, 27 29 } 28 30 }
+10 -1
src/components/Button.svelte
··· 1 1 <script lang="ts"> 2 + import type { HTMLBaseAttributes } from 'svelte/elements' 3 + 4 + // eslint-disable-next-line @typescript-eslint/no-unused-vars 5 + interface $$Props extends HTMLBaseAttributes { 6 + secondary?: boolean 7 + danger?: boolean 8 + type?: 'button' | 'submit' | 'reset' 9 + } 10 + 2 11 export let secondary = false 3 12 export let danger = false 4 13 export let type: 'button' | 'submit' | 'reset' = 'button' ··· 6 15 $: normal = !danger && !secondary 7 16 </script> 8 17 9 - <button on:click on:mousedown class:normal class:secondary class:danger {type}> 18 + <button on:click on:mousedown class:normal class:secondary class:danger {type} {...$$restProps}> 10 19 <slot /> 11 20 </button> 12 21
+24 -6
src/components/CheckForUpdates.svelte
··· 2 2 import { ipc_renderer } from '@/lib/window' 3 3 import Modal from './Modal.svelte' 4 4 import Button from './Button.svelte' 5 - import { is_dev } from '@/lib/data' 5 + import { is_dev, save_view_options, view_options } from '@/lib/data' 6 6 7 7 let latest_update: Awaited<ReturnType<typeof check>> | null = null 8 8 ··· 12 12 return 13 13 } 14 14 const result = await ipc_renderer.invoke('check_for_updates') 15 - if (!result || result.channel.version === result.app_version) { 15 + if ( 16 + !result || 17 + result.channel.version === result.app_version || 18 + result.channel.version === view_options.skipUpdatingToVersion 19 + ) { 16 20 return 17 21 } 18 22 19 23 latest_update = result 20 24 return result 21 25 } 26 + 27 + function skip_update(version: string) { 28 + view_options.skipUpdatingToVersion = version 29 + save_view_options(view_options) 30 + } 22 31 </script> 23 32 24 33 {#if latest_update} 25 - {@const url = latest_update.channel.url} 34 + {@const channel = latest_update.channel} 26 35 <Modal 27 36 on_cancel={() => (latest_update = null)} 28 37 cancel_on_escape 29 - form={() => ipc_renderer.invoke('open_url', url)} 38 + form={() => ipc_renderer.invoke('open_url', channel.url)} 30 39 title="A new version of Ferrum is available!" 31 40 > 41 + <!-- svelte-ignore a11y-no-noninteractive-tabindex --> 32 42 <div class="max-w-xl text-sm"> 33 43 <p class="pb-3"> 34 44 Ferrum {latest_update.channel.version} is available. You are currently on {latest_update.app_version} ··· 39 49 </p> 40 50 </div> 41 51 <svelte:fragment slot="buttons"> 42 - <Button secondary on:click={() => (latest_update = null)}>Later</Button> 43 - <Button on:click={() => ipc_renderer.invoke('open_url', url)}>Update</Button> 52 + <Button 53 + secondary 54 + on:click={() => { 55 + skip_update(channel.version) 56 + latest_update = null 57 + }}>Skip This Version</Button 58 + > 59 + <div class="grow"></div> 60 + <Button secondary autofocus on:click={() => (latest_update = null)}>Later</Button> 61 + <Button on:click={() => ipc_renderer.invoke('open_url', channel.url)}>Update</Button> 44 62 </svelte:fragment> 45 63 </Modal> 46 64 {/if}