From e424009dd3b36bf9796b173b83d9f1df0555e0f9 Mon Sep 17 00:00:00 2001
From: Nicolas Meienberger
Date: Sun, 8 Feb 2026 15:53:58 +0100
Subject: [PATCH] refactor: create volume & restore snapshot
---
app/client/components/restore-form.tsx | 6 +-
.../backups/routes/restore-snapshot.tsx | 62 -----------------
.../repositories/routes/restore-snapshot.tsx | 62 ++++++-----------
.../modules/volumes/routes/create-volume.tsx | 19 ++----
app/routeTree.gen.ts | 67 +++++++++++++++++++
.../backups/$backupId.$snapshotId.restore.tsx | 38 +++++++++++
.../repositories/$repoId.$snapId.restore.tsx | 41 ++++++++++++
app/routes/(dashboard)/volumes/create.tsx | 19 ++++++
app/routes/__root.tsx | 3 +
app/routes/index.tsx | 11 ++-
.../repositories/repositories.service.ts | 2 -
11 files changed, 204 insertions(+), 126 deletions(-)
delete mode 100644 app/client/modules/backups/routes/restore-snapshot.tsx
create mode 100644 app/routes/(dashboard)/backups/$backupId.$snapshotId.restore.tsx
create mode 100644 app/routes/(dashboard)/repositories/$repoId.$snapId.restore.tsx
create mode 100644 app/routes/(dashboard)/volumes/create.tsx
diff --git a/app/client/components/restore-form.tsx b/app/client/components/restore-form.tsx
index b6a8c6b4..043e9b3f 100644
--- a/app/client/components/restore-form.tsx
+++ b/app/client/components/restore-form.tsx
@@ -1,6 +1,5 @@
import { useCallback, useState } from "react";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
-import { useNavigate } from "react-router";
import { toast } from "sonner";
import { ChevronDown, FileIcon, FolderOpen, RotateCcw } from "lucide-react";
import { Button } from "~/client/components/ui/button";
@@ -16,6 +15,7 @@ import { useFileBrowser } from "~/client/hooks/use-file-browser";
import { OVERWRITE_MODES, type OverwriteMode } from "~/schemas/restic";
import type { Repository, Snapshot } from "~/client/lib/types";
import { handleRepositoryError } from "~/client/lib/errors";
+import { useNavigate } from "@tanstack/react-router";
type RestoreLocation = "original" | "custom";
@@ -101,7 +101,7 @@ export function RestoreForm({ snapshot, repository, snapshotId, returnPath }: Re
...restoreSnapshotMutation(),
onSuccess: () => {
toast.success("Restore completed");
- void navigate(returnPath);
+ void navigate({ to: returnPath });
},
onError: (error) => {
handleRepositoryError("Restore failed", error, repository.id);
@@ -156,7 +156,7 @@ export function RestoreForm({ snapshot, repository, snapshotId, returnPath }: Re
-