mirror of
https://github.com/immich-app/immich
synced 2025-11-07 17:27:20 +00:00
* First test * Added translation using Weblate (French) * Translated using Weblate (German) Currently translated at 100.0% (4 of 4 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/de/ * Translated using Weblate (French) Currently translated at 100.0% (4 of 4 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/fr/ * Further testing * Further testing * Translated using Weblate (German) Currently translated at 100.0% (18 of 18 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/de/ * Further work * Update string file. * More strings * Automatically changed strings * Add automatically translated german file for testing purposes * Fix merge-face-selector component * Make server stats strings uppercase * Fix uppercase string * Fix some strings in jobs-panel * Fix lower and uppercase strings. Add a few additional string. Fix a few unnecessary replacements * Update german test translations * Fix typo in locales file * Change string keys * Extract more strings * Extract and replace some more strings * Update testtranslationfile * Change translation keys * Fix rebase errors * Fix one more rebase error * Remove german translation file * Co-authored-by: Daniel Dietzler <danieldietzler@users.noreply.github.com> * chore: clean up translations * chore: add new line * fix formatting * chore: fixes * fix: loading and tests --------- Co-authored-by: root <root@Blacki> Co-authored-by: admin <admin@example.com> Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
79 lines
2.3 KiB
Svelte
79 lines
2.3 KiB
Svelte
<svelte:options accessors />
|
|
|
|
<script lang="ts">
|
|
import {
|
|
NotificationType,
|
|
notificationController,
|
|
} from '$lib/components/shared-components/notification/notification';
|
|
import { handleError } from '$lib/utils/handle-error';
|
|
import { getConfig, getConfigDefaults, updateConfig, type SystemConfigDto } from '@immich/sdk';
|
|
import { loadConfig } from '$lib/stores/server-config.store';
|
|
import { cloneDeep } from 'lodash-es';
|
|
import { createEventDispatcher, onMount } from 'svelte';
|
|
import type { SettingsEventType } from './admin-settings';
|
|
import { t } from 'svelte-i18n';
|
|
|
|
export let config: SystemConfigDto;
|
|
|
|
let savedConfig: SystemConfigDto;
|
|
let defaultConfig: SystemConfigDto;
|
|
|
|
const dispatch = createEventDispatcher<{ save: void }>();
|
|
|
|
const handleReset = async (detail: SettingsEventType['reset']) => {
|
|
await (detail.default ? resetToDefault(detail.configKeys) : reset(detail.configKeys));
|
|
};
|
|
|
|
export const handleSave = async (update: Partial<SystemConfigDto>) => {
|
|
try {
|
|
const newConfig = await updateConfig({
|
|
systemConfigDto: {
|
|
...savedConfig,
|
|
...update,
|
|
},
|
|
});
|
|
|
|
config = cloneDeep(newConfig);
|
|
savedConfig = cloneDeep(newConfig);
|
|
notificationController.show({ message: $t('settings_saved'), type: NotificationType.Info });
|
|
|
|
await loadConfig();
|
|
|
|
dispatch('save');
|
|
} catch (error) {
|
|
handleError(error, $t('errors.unable_to_save_settings'));
|
|
}
|
|
};
|
|
|
|
const reset = async (configKeys: Array<keyof SystemConfigDto>) => {
|
|
const resetConfig = await getConfig();
|
|
|
|
for (const key of configKeys) {
|
|
config = { ...config, [key]: resetConfig[key] };
|
|
}
|
|
|
|
notificationController.show({
|
|
message: 'Reset settings to the recent saved settings',
|
|
type: NotificationType.Info,
|
|
});
|
|
};
|
|
|
|
const resetToDefault = (configKeys: Array<keyof SystemConfigDto>) => {
|
|
for (const key of configKeys) {
|
|
config = { ...config, [key]: defaultConfig[key] };
|
|
}
|
|
|
|
notificationController.show({
|
|
message: $t('reset_settings_to_default'),
|
|
type: NotificationType.Info,
|
|
});
|
|
};
|
|
|
|
onMount(async () => {
|
|
[savedConfig, defaultConfig] = await Promise.all([getConfig(), getConfigDefaults()]);
|
|
});
|
|
</script>
|
|
|
|
{#if savedConfig && defaultConfig}
|
|
<slot {handleReset} {handleSave} {savedConfig} {defaultConfig} />
|
|
{/if}
|