diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index ba2e1da..ee63ff8 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -1,7 +1,7 @@
diff --git a/frontend/src/lib/components/Dialog/CreateOrEditProfileModal.svelte b/frontend/src/lib/components/Dialog/CreateOrEditProfileModal.svelte
index e10afd0..ffb3b7f 100644
--- a/frontend/src/lib/components/Dialog/CreateOrEditProfileModal.svelte
+++ b/frontend/src/lib/components/Dialog/CreateOrEditProfileModal.svelte
@@ -8,10 +8,9 @@
import Button from '../Button/Button.svelte';
import Container from '../Container.svelte';
import IconToggle from '../IconToggle.svelte';
- import { createModal, modalStack } from '../Modal/modal.store';
import ProfileIcon from '../ProfileIcon.svelte';
import SelectField from '../SelectField.svelte';
- import { navigate } from '../StackRouter/stack-router.store';
+ import { navigate, useComponentStack } from '../StackRouter/stack-router.store';
import { useTabs } from '../Tab/Tab';
import Tab from '../Tab/Tab.svelte';
import TextField from '../TextField.svelte';
@@ -26,7 +25,7 @@
ProfilePictures
}
- export let modalId: symbol;
+ const { close, push } = useComponentStack();
export let user: ReiverrUser | undefined = undefined;
export let onComplete: () => void = () => {};
@@ -130,7 +129,7 @@
if (error) {
errorMessage = error;
} else {
- modalStack.closeTopmost();
+ close();
onComplete();
}
}
@@ -149,7 +148,7 @@
if (error) {
errorMessage = error;
} else {
- modalStack.closeTopmost();
+ close();
onComplete();
}
}
@@ -164,7 +163,7 @@
if (error) {
errorMessage = error;
} else {
- modalStack.close(modalId);
+ close();
if (self) {
sessions.removeSession();
navigate('/');
@@ -230,10 +229,13 @@
type="primary-dark"
icon={Trash}
on:clickOrSelect={() =>
- createModal(ConfirmDialog, {
- header: 'Delete Account',
- body: 'Are you sure you want to delete your account?',
- confirm: handleDeleteAccount
+ push({
+ component: ConfirmDialog,
+ props: {
+ header: 'Delete Account',
+ body: 'Are you sure you want to delete your account?',
+ confirm: handleDeleteAccount
+ }
})}
>
Delete Account
diff --git a/frontend/src/lib/components/Dialog/SelectDialog.svelte b/frontend/src/lib/components/Dialog/SelectDialog.svelte
index 2a7dd88..8f41e59 100644
--- a/frontend/src/lib/components/Dialog/SelectDialog.svelte
+++ b/frontend/src/lib/components/Dialog/SelectDialog.svelte
@@ -2,7 +2,9 @@
import Dialog from '../Dialog/Dialog.svelte';
import type { JellyfinUser } from '../../apis/jellyfin/jellyfin-api';
import SelectItem from '../SelectItem.svelte';
- import { modalStack } from '../Modal/modal.store';
+ import { useComponentStack } from '../StackRouter/stack-router.store';
+
+ const { close } = useComponentStack();
// TODO: Add labels to the options
export let title: string = 'Select';
@@ -11,11 +13,9 @@
export let selectedOption: string | undefined = undefined;
export let handleSelectOption: (option: string) => void;
- export let modalId: symbol;
-
function handleSelect(option: string) {
handleSelectOption(option);
- modalStack.close(modalId);
+ close();
}
diff --git a/frontend/src/lib/components/Integrations/TmdbIntegrationConnectDialog.svelte b/frontend/src/lib/components/Integrations/TmdbIntegrationConnectDialog.svelte
index 5881978..51e8421 100644
--- a/frontend/src/lib/components/Integrations/TmdbIntegrationConnectDialog.svelte
+++ b/frontend/src/lib/components/Integrations/TmdbIntegrationConnectDialog.svelte
@@ -1,9 +1,11 @@
diff --git a/frontend/src/lib/components/Modal/ModalStack.svelte b/frontend/src/lib/components/Modal/ModalStack.svelte
deleted file mode 100644
index 483743d..0000000
--- a/frontend/src/lib/components/Modal/ModalStack.svelte
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
>(
- component: ComponentType ,
- group: symbol | undefined = undefined
- ) {
- const id = Symbol();
- const item = { id, component, props, group: group || id };
- items.update((prev) => [...prev, item]);
- return id;
- }
-
- function reset() {
- items.set([]);
- }
-
- function closeTopmost() {
- const t = get(top);
- if (t) {
- close(t.id);
- }
- }
-
- return {
- subscribe: items.subscribe,
- top: {
- subscribe: top.subscribe
- },
- create,
- close,
- closeGroup,
- closeTopmost,
- reset
- };
-}
-
-export const modalStack = useComponentStack();
-export const modalStackTop = modalStack.top;
export const createModal =