diff --git a/apps/web/app/dashboard/timeline/page.tsx b/apps/web/app/dashboard/timeline/page.tsx index 9733b68..48f83ee 100644 --- a/apps/web/app/dashboard/timeline/page.tsx +++ b/apps/web/app/dashboard/timeline/page.tsx @@ -7,7 +7,7 @@ async function fetchDays(view: string, dateQuery: string) { const timezone = await api.users.getTimezone(); const today = spacetime(dateQuery ?? "today"); - const firstDay = today.subtract(3, "day").last("week").startOf("week"); + const firstDay = today.subtract(2, "week").startOf("week"); const days = []; for (let i = 0; i < 20; i++) { diff --git a/apps/web/components/dashboard/admin/DatabaseSettings.tsx b/apps/web/components/dashboard/admin/DatabaseSettings.tsx index fd7443e..9eb7253 100644 --- a/apps/web/components/dashboard/admin/DatabaseSettings.tsx +++ b/apps/web/components/dashboard/admin/DatabaseSettings.tsx @@ -1,17 +1,13 @@ "use client"; // Mark as client component import { Separator } from "@radix-ui/react-dropdown-menu"; -import { useState } from "react"; +import { Dispatch, useState } from "react"; export default function DatabaseSettings() { const [uploadStatus, setUploadStatus] = useState(null); + const [remoteCopyStatus, setRemoteCopyStatus] = useState(null); - // Handle form submission - const handleSubmit = async (event: React.FormEvent) => { - event.preventDefault(); // Prevent default form submission - - const formData = new FormData(event.currentTarget); - + const uploadDB = async (formData: FormData, setStatus: Dispatch) => { try { const response = await fetch("/api/db/upload", { method: "POST", @@ -19,15 +15,57 @@ export default function DatabaseSettings() { }); if (response.ok) { - setUploadStatus("Database uploaded successfully!"); + setStatus("Database uploaded successfully!"); } else { const error = await response.json(); - setUploadStatus(error.message || "An error occurred during upload."); + setStatus(error.message || "An error occurred during upload."); } } catch (error) { console.error("Error uploading the database:", error); - setUploadStatus("An error occurred during upload."); + setStatus("An error occurred during upload."); } + } + + // Handle form submission + const handleSubmit = async (event: React.FormEvent) => { + event.preventDefault(); // Prevent default form submission + + const formData = new FormData(event.currentTarget); + uploadDB(formData, setUploadStatus); + }; + + const remoteCopy = async () => { + + const remoteUrl = "https://lifetracker.ryanpandya.com/api/db/download"; + + setRemoteCopyStatus("Downloading..."); + const download = await fetch(remoteUrl); + if (!download.ok) { + throw new Error(`Failed to fetch from ${remoteUrl}: ${download.statusText}`); + } + + const dbData = await download.blob(); + + const formData = new FormData(); + formData.append('sqliteFile', dbData, 'remoteDB-file.db'); + uploadDB(formData, setRemoteCopyStatus); + + // try { + // const response = await fetch("/api/db/upload", { + // method: "POST", + // body: formData, + // }); + + // if (response.ok) { + // setUploadStatus("Database uploaded successfully!"); + // } else { + // const error = await response.json(); + // setUploadStatus(error.message || "An error occurred during upload."); + // } + // } catch (error) { + // console.error("Error uploading the database:", error); + // setUploadStatus("An error occurred during upload."); + // } }; return ( @@ -45,7 +83,7 @@ export default function DatabaseSettings() { -
+
Download SQLite Database
@@ -57,6 +95,19 @@ export default function DatabaseSettings() {
+ {process.env.NODE_ENV === 'development' ? +
+
+ Copy from Remote URL +
+
+
+ + {remoteCopyStatus &&

{remoteCopyStatus}

} +
+
+
+ : ""} ); }