mirror of
https://github.com/immich-app/immich
synced 2025-06-10 23:58:28 +00:00

* refactor: store latest immich version available on the server * don't store admins acknowledgement * merge main * fix: api * feat: custom interval * pr feedback * remove unused code * update environment-variables * pr feedback * ci: fix server tests * fix: dart number * pr feedback * remove proxy * pr feedback * feat: make stringToVersion more flexible * feat(web): disable check * feat: working version * remove env * fix: check if interval exists when updating the interval * feat: show last check * fix: tests * fix: remove availableVersion when updated * fix merge * fix: web * fix e2e tests * merge main * merge main * pr feedback * pr feedback * fix: tests * pr feedback * pr feedback * pr feedback * pr feedback * pr feedback * fix: migration * regenerate api * fix: typo * fix: compare versions * pr feedback * fix * pr feedback * fix: checkIntervalTime on startup * refactor: websockets and interval logic * chore: open api * chore: remove unused code * fix: use interval instead of cron * mobile: handle WS event data as json object --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
69 lines
2.3 KiB
Svelte
69 lines
2.3 KiB
Svelte
<script lang="ts">
|
|
import type { ServerVersionResponseDto } from '@api';
|
|
import { websocketStore } from '$lib/stores/websocket';
|
|
import Button from '../elements/buttons/button.svelte';
|
|
import FullScreenModal from './full-screen-modal.svelte';
|
|
|
|
let showModal = false;
|
|
|
|
const { onRelease } = websocketStore;
|
|
|
|
const semverToName = ({ major, minor, patch }: ServerVersionResponseDto) => `v${major}.${minor}.${patch}`;
|
|
|
|
$: releaseVersion = $onRelease && semverToName($onRelease.releaseVersion);
|
|
$: serverVersion = $onRelease && semverToName($onRelease.serverVersion);
|
|
$: $onRelease?.isAvailable && handleRelease();
|
|
|
|
const onAcknowledge = () => {
|
|
localStorage.setItem('appVersion', releaseVersion);
|
|
showModal = false;
|
|
};
|
|
|
|
const handleRelease = () => {
|
|
try {
|
|
if (localStorage.getItem('appVersion') === releaseVersion) {
|
|
return;
|
|
}
|
|
|
|
showModal = true;
|
|
} catch (err) {
|
|
console.error('Error [VersionAnnouncementBox]:', err);
|
|
}
|
|
};
|
|
</script>
|
|
|
|
{#if showModal}
|
|
<FullScreenModal on:clickOutside={() => (showModal = false)}>
|
|
<div
|
|
class="max-w-lg rounded-3xl border bg-immich-bg px-8 py-10 shadow-sm dark:border-immich-dark-gray dark:bg-immich-dark-gray dark:text-immich-dark-fg"
|
|
>
|
|
<p class="mb-4 text-2xl">🎉 NEW VERSION AVAILABLE 🎉</p>
|
|
|
|
<div>
|
|
Hi friend, there is a new release of
|
|
<span class="font-immich-title font-bold text-immich-primary dark:text-immich-dark-primary">IMMICH</span>,
|
|
please take your time to visit the
|
|
<span class="font-medium underline"
|
|
><a href="https://github.com/immich-app/immich/releases/latest" target="_blank" rel="noopener noreferrer"
|
|
>release notes</a
|
|
></span
|
|
>
|
|
and ensure your <code>docker-compose</code>, and <code>.env</code> setup is up-to-date to prevent any misconfigurations,
|
|
especially if you use WatchTower or any mechanism that handles updating your application automatically.
|
|
</div>
|
|
|
|
<div class="mt-4 font-medium">Your friend, Alex</div>
|
|
|
|
<div class="font-sm mt-8">
|
|
<code>Server Version: {serverVersion}</code>
|
|
<br />
|
|
<code>Latest Version: {releaseVersion}</code>
|
|
</div>
|
|
|
|
<div class="mt-8 text-right">
|
|
<Button fullwidth on:click={onAcknowledge}>Acknowledge</Button>
|
|
</div>
|
|
</div>
|
|
</FullScreenModal>
|
|
{/if}
|