From c571f82ef32332d26ebd8ae9eea43c08cc6e8902 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 18 Nov 2023 10:49:37 +0100 Subject: [PATCH] feat: option to delete orbiter (#320) Signed-off-by: David Dal Busco --- .../components/canister/CanisterDelete.svelte | 24 ++++++++++++++++ .../modals/CanisterDeleteModal.svelte | 15 ++++++++-- .../src/lib/components/modals/Modals.svelte | 5 ++++ .../modals/OrbiterDeleteModal.svelte | 28 +++++++++++++++++++ .../components/orbiter/OrbiterActions.svelte | 3 ++ .../components/orbiter/OrbiterDelete.svelte | 27 ++++++++++++++++++ .../satellites/SatelliteDelete.svelte | 15 ++-------- src/frontend/src/lib/i18n/en.json | 8 +++--- src/frontend/src/lib/i18n/zh-cn.json | 8 +++--- src/frontend/src/lib/types/i18n.d.ts | 2 +- src/frontend/src/lib/types/modal.ts | 3 ++ 11 files changed, 113 insertions(+), 25 deletions(-) create mode 100644 src/frontend/src/lib/components/canister/CanisterDelete.svelte create mode 100644 src/frontend/src/lib/components/modals/OrbiterDeleteModal.svelte create mode 100644 src/frontend/src/lib/components/orbiter/OrbiterDelete.svelte diff --git a/src/frontend/src/lib/components/canister/CanisterDelete.svelte b/src/frontend/src/lib/components/canister/CanisterDelete.svelte new file mode 100644 index 000000000..93313e0f7 --- /dev/null +++ b/src/frontend/src/lib/components/canister/CanisterDelete.svelte @@ -0,0 +1,24 @@ + + +{#if enabled} +
+ +
+{/if} diff --git a/src/frontend/src/lib/components/modals/CanisterDeleteModal.svelte b/src/frontend/src/lib/components/modals/CanisterDeleteModal.svelte index 8ccba139f..e2a88955a 100644 --- a/src/frontend/src/lib/components/modals/CanisterDeleteModal.svelte +++ b/src/frontend/src/lib/components/modals/CanisterDeleteModal.svelte @@ -15,10 +15,10 @@ import { goto } from '$app/navigation'; import type { Principal } from '@dfinity/principal'; import { ONE_TRILLION } from '$lib/constants/constants'; - import { i18nFormat } from '$lib/utils/i18n.utils'; + import { i18nCapitalize, i18nFormat } from '$lib/utils/i18n.utils'; import { formatTCycles } from '$lib/utils/cycles.utils'; - export let segment: 'satellite' | 'orbiter'; + export let segment: 'satellite' | 'analytics'; export let currentCycles: bigint; export let deleteFn: (params: { missionControlId: Principal; @@ -89,7 +89,16 @@ close(); - toasts.success($i18n.satellites.delete_success); + toasts.success( + i18nCapitalize( + i18nFormat($i18n.canisters.delete_success, [ + { + placeholder: '{0}', + value: segment + } + ]) + ) + ); } catch (err: unknown) { steps = 'error'; diff --git a/src/frontend/src/lib/components/modals/Modals.svelte b/src/frontend/src/lib/components/modals/Modals.svelte index 6511cb855..7cdfce8a7 100644 --- a/src/frontend/src/lib/components/modals/Modals.svelte +++ b/src/frontend/src/lib/components/modals/Modals.svelte @@ -12,6 +12,7 @@ import OrbiterUpgradeModal from '$lib/components/modals/OrbiterUpgradeModal.svelte'; import OrbiterTopUpModal from '$lib/components/modals/OrbiterTopUpModal.svelte'; import SatelliteDeleteModal from '$lib/components/modals/SatelliteDeleteModal.svelte'; + import OrbiterDeleteModal from '$lib/components/modals/OrbiterDeleteModal.svelte'; let modal: JunoModal | undefined = undefined; @@ -63,3 +64,7 @@ {#if modal?.type === 'delete_satellite' && nonNullish(modal.detail)} {/if} + +{#if modal?.type === 'delete_orbiter' && nonNullish(modal.detail)} + +{/if} diff --git a/src/frontend/src/lib/components/modals/OrbiterDeleteModal.svelte b/src/frontend/src/lib/components/modals/OrbiterDeleteModal.svelte new file mode 100644 index 000000000..44c421d66 --- /dev/null +++ b/src/frontend/src/lib/components/modals/OrbiterDeleteModal.svelte @@ -0,0 +1,28 @@ + + +{#if nonNullish($orbiterStore)} + +{/if} diff --git a/src/frontend/src/lib/components/orbiter/OrbiterActions.svelte b/src/frontend/src/lib/components/orbiter/OrbiterActions.svelte index 1b5141166..018d59839 100644 --- a/src/frontend/src/lib/components/orbiter/OrbiterActions.svelte +++ b/src/frontend/src/lib/components/orbiter/OrbiterActions.svelte @@ -4,6 +4,7 @@ import CanisterStopStart from '$lib/components/canister/CanisterStopStart.svelte'; import type { Orbiter } from '$declarations/mission_control/mission_control.did'; import type { Canister } from '$lib/types/canister'; + import OrbiterDelete from '$lib/components/orbiter/OrbiterDelete.svelte'; export let orbiter: Orbiter; @@ -27,4 +28,6 @@ + + diff --git a/src/frontend/src/lib/components/orbiter/OrbiterDelete.svelte b/src/frontend/src/lib/components/orbiter/OrbiterDelete.svelte new file mode 100644 index 000000000..0d7cf3c71 --- /dev/null +++ b/src/frontend/src/lib/components/orbiter/OrbiterDelete.svelte @@ -0,0 +1,27 @@ + + + diff --git a/src/frontend/src/lib/components/satellites/SatelliteDelete.svelte b/src/frontend/src/lib/components/satellites/SatelliteDelete.svelte index 1b7d6a1cc..61318236b 100644 --- a/src/frontend/src/lib/components/satellites/SatelliteDelete.svelte +++ b/src/frontend/src/lib/components/satellites/SatelliteDelete.svelte @@ -1,12 +1,9 @@ -{#if enabled} -
- -
-{/if} + diff --git a/src/frontend/src/lib/i18n/en.json b/src/frontend/src/lib/i18n/en.json index 9717c8b4d..bf7579457 100644 --- a/src/frontend/src/lib/i18n/en.json +++ b/src/frontend/src/lib/i18n/en.json @@ -61,7 +61,7 @@ "upgrade_done": "Your {0} has been has been successfully upgraded to version {1}.", "upgrade": "Upgrade", "delete_title": "Delete {0}", - "delete_explanation": "Cycles are necessary to delete a {0}, but the Internet Computer doesn't specify the exact amount required for this operation. Therefore, we recommend retaining 1 T Cycles on your {1} for this purpose.", + "delete_explanation": "Cycles are necessary to delete the {0}, but the Internet Computer doesn't specify the exact amount required for this operation. Therefore, we recommend retaining 1 T Cycles on your {1} for this purpose.", "delete_customization": "You have the flexibility to modify this value if needed. Your current {0} balance is {1} T Cycles. Any remaining cycles will be transferred to your mission control. ", "cycles_to_retain": "T Cycles to retain", "cycles_to_transfer": "{0} T Cycles will be transferred to your mission control.", @@ -74,7 +74,8 @@ "stop_success": "{0} stopped.", "start_tile": "Restart {0}", "start_info": "Do you want to resume your {0}?", - "start_success": "{0} resumed." + "start_success": "{0} resumed.", + "delete_success": "{0} deleted." }, "sign_in": { "title": "Launch your first satellite", @@ -100,8 +101,7 @@ "create_satellite_price": "Starting a new satellite requires {0} ICP. Your current mission control balance is {1} ICP and you have {2} credits remaining.", "loading_satellites": "Loading your satellites", "overview": "Overview", - "id": "Satellite ID", - "delete_success": "Satellite deleted." + "id": "Satellite ID" }, "mission_control": { "title": "Mission Control", diff --git a/src/frontend/src/lib/i18n/zh-cn.json b/src/frontend/src/lib/i18n/zh-cn.json index ea6e98cad..1bbd49a43 100644 --- a/src/frontend/src/lib/i18n/zh-cn.json +++ b/src/frontend/src/lib/i18n/zh-cn.json @@ -61,7 +61,7 @@ "upgrade_done": "你的 {0} 已经成功的升级到版本 {1}.", "upgrade": "升级", "delete_title": "Delete {0}", - "delete_explanation": "Cycles are necessary to delete a {0}, but the Internet Computer doesn't specify the exact amount required for this operation. Therefore, we recommend retaining 1 T Cycles on your {1} for this purpose.", + "delete_explanation": "Cycles are necessary to delete the {0}, but the Internet Computer doesn't specify the exact amount required for this operation. Therefore, we recommend retaining 1 T Cycles on your {1} for this purpose.", "delete_customization": "You have the flexibility to modify this value if needed. Your current {0} balance is {1} T Cycles. Any remaining cycles will be transferred to your mission control. ", "cycles_to_retain": "T Cycles to retain", "cycles_to_transfer": "{0} T Cycles will be transferred to your mission control.", @@ -74,7 +74,8 @@ "stop_success": "{0} 已停止.", "start_tile": "重启 {0}", "start_info": "你想恢复你的 {0}?", - "start_success": "{0} 已恢复." + "start_success": "{0} 已恢复.", + "delete_success": "{0} deleted." }, "sign_in": { "title": "创建你的第一个satellite", @@ -100,8 +101,7 @@ "create_satellite_price": "为了创建新的 satellite 需要 {0} ICP. 你当前 mission control 余额是 {1} ICP 而且你还剩 {2} 积分.", "loading_satellites": "加载你的satellites", "overview": "概要", - "id": "Satellite ID", - "delete_success": "Satellite deleted." + "id": "Satellite ID" }, "mission_control": { "title": "Mission Control", diff --git a/src/frontend/src/lib/types/i18n.d.ts b/src/frontend/src/lib/types/i18n.d.ts index ca3d0d88f..795b1a061 100644 --- a/src/frontend/src/lib/types/i18n.d.ts +++ b/src/frontend/src/lib/types/i18n.d.ts @@ -79,6 +79,7 @@ interface I18nCanisters { start_tile: string; start_info: string; start_success: string; + delete_success: string; } interface I18nSign_in { @@ -107,7 +108,6 @@ interface I18nSatellites { loading_satellites: string; overview: string; id: string; - delete_success: string; } interface I18nMission_control { diff --git a/src/frontend/src/lib/types/modal.ts b/src/frontend/src/lib/types/modal.ts index 28204368b..42010a206 100644 --- a/src/frontend/src/lib/types/modal.ts +++ b/src/frontend/src/lib/types/modal.ts @@ -41,6 +41,9 @@ export interface JunoModalDelete { export type JunoModalDeleteSatelliteDetail = JunoModalDelete & JunoModalSatelliteDetail; +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface JunoModalDeleteOrbiterDetail extends JunoModalDelete {} + export interface JunoModalCreateControllerDetail { add: ( params: {