diff --git a/package-lock.json b/package-lock.json
index 3b46e6c..14d289b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,7 @@
"@fontsource/fira-mono": "^4.5.10",
"@neoconfetti/svelte": "^1.0.0",
"@sveltejs/adapter-auto": "^3.0.0",
+ "@sveltejs/adapter-static": "^3.0.2",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^3.0.0",
"@zerodevx/svelte-toast": "^0.9.5",
@@ -826,6 +827,16 @@
"@sveltejs/kit": "^2.0.0"
}
},
+ "node_modules/@sveltejs/adapter-static": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.2.tgz",
+ "integrity": "sha512-/EBFydZDwfwFfFEuF1vzUseBoRziwKP7AoHAwv+Ot3M084sE/HTVBHf9mCmXfdM9ijprY5YEugZjleflncX5fQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@sveltejs/kit": "^2.0.0"
+ }
+ },
"node_modules/@sveltejs/kit": {
"version": "2.5.18",
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.18.tgz",
diff --git a/package.json b/package.json
index ede6c59..a44bbc3 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"@fontsource/fira-mono": "^4.5.10",
"@neoconfetti/svelte": "^1.0.0",
"@sveltejs/adapter-auto": "^3.0.0",
+ "@sveltejs/adapter-static": "^3.0.2",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^3.0.0",
"@zerodevx/svelte-toast": "^0.9.5",
diff --git a/src/lib/auth/Auth.js b/src/lib/auth/Auth.js
index 5324369..11cf0bd 100644
--- a/src/lib/auth/Auth.js
+++ b/src/lib/auth/Auth.js
@@ -27,8 +27,12 @@ export async function checkAuth() {
export function checkAuthSync() {
let result = getAuthInfo();
if (!result) return false;
- let decoded = jwtDecode(result.a);
- return !(isPast(parseISO(new Date(decoded.exp*1000).toISOString())));
+ try {
+ let decoded = jwtDecode(result.a);
+ return !isPast(parseISO(new Date(decoded.exp * 1000).toISOString()));
+ } catch (e) {
+ return false;
+ }
}
export const makeAuthHeaderForAxios = (jwt) => {
diff --git a/src/lib/ui-components/navbar.svelte b/src/lib/ui-components/navbar.svelte
index 87cb443..0c844cd 100644
--- a/src/lib/ui-components/navbar.svelte
+++ b/src/lib/ui-components/navbar.svelte
@@ -1,6 +1,7 @@
@@ -51,6 +52,9 @@
-
+
diff --git a/src/lib/ui-components/pagination.svelte b/src/lib/ui-components/pagination.svelte
new file mode 100644
index 0000000..cff560f
--- /dev/null
+++ b/src/lib/ui-components/pagination.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/src/routes/+layout.js b/src/routes/+layout.js
new file mode 100644
index 0000000..d2c0be2
--- /dev/null
+++ b/src/routes/+layout.js
@@ -0,0 +1,2 @@
+export const prerender = true;
+export const ssr = false;
\ No newline at end of file
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 00439fc..c306817 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -24,7 +24,7 @@
{#if loggedIn}
-
+
{/if}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index e69de29..b6e62d2 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/src/routes/disputes/+page.svelte b/src/routes/disputes/+page.svelte
new file mode 100644
index 0000000..7111a30
--- /dev/null
+++ b/src/routes/disputes/+page.svelte
@@ -0,0 +1,304 @@
+
+
+
+
+
+
+
{
+ currentPageDisputes = n;
+ getDisputes();
+ }}
+ disableButtons={disablePagesDisputes}
+ css={"btn-neutral"}
+ />
+
+ Всего страниц: {numOfPagesDisputes}
+
+
+
+ {#if !disablePagesDisputes}
+
+
+
+
+ ID |
+ Статус |
+ СБП |
+ Карта |
+ Телефон |
+ Курс |
+ Сумма |
+ Время создания |
+ Опции |
+
+
+
+
+ {#each disputes as dispute}
+
+ {dispute["order_id"]} |
+ {disputesStatusMap[dispute["order_status"]]} |
+ {dispute["is_sbp"] === "t" ? "да" : "нет"} |
+ {dispute["requisite_cardnumber"]} |
+ {dispute["requisite_phone"]} |
+ {dispute["order_rate"]} |
+ {dispute["amount"]} |
+ {dispute["order_creationtime"]} |
+ {
+ selectedDispute = dispute;
+ showFullInfo = true;
+ }}
+ class="flex gap-2"
+ >
+
+ |
+
+ {/each}
+
+
+ {:else}
+
+ {/if}
+
+
+
+
+{#if showFullInfo}
+
+
+
ID: {selectedDispute.order_id}
+
+ {disputesStatusMap[selectedDispute["order_status"]]}
+
+
{selectedDispute.order_creationtime}
+
+
{selectedDispute.name}
+
Карта: {selectedDispute.requisite_cardnumber}
+
Телефон: {selectedDispute.requisite_phone}
+
+
+
Курс
+
{selectedDispute.order_rate} RUB
+
+
+
Сумма по факту
+
+ {Number(selectedDispute.order_rate) * Number(selectedDispute.amount)} RUB
+
+
+ {#if selectedDispute["order_status"] === "4"}
+
+
+ {/if}
+ {#if selectedDispute["order_status"] !== "4"}
+
+ {/if}
+
+
+
+{/if}
diff --git a/src/routes/home/+page.svelte b/src/routes/home/+page.svelte
deleted file mode 100644
index 6fd04ab..0000000
--- a/src/routes/home/+page.svelte
+++ /dev/null
@@ -1 +0,0 @@
-
BOO1
\ No newline at end of file
diff --git a/src/routes/user/edit/req/[userToken]/[reqID]/+page.js b/src/routes/user/edit/req/[userToken]/[reqID]/+page.js
new file mode 100644
index 0000000..6b70881
--- /dev/null
+++ b/src/routes/user/edit/req/[userToken]/[reqID]/+page.js
@@ -0,0 +1,14 @@
+import { browser } from "$app/environment";
+import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth";
+import { makePost } from "$lib/tools/requests/requests";
+import { sayError } from "$lib/tools/toaster/Toaster";
+
+export async function load({ params }) {
+ if(!browser) return;
+ const { userToken } = params;
+ const { reqID } = params;
+ return {
+ token: userToken,
+ reqID: reqID
+ };
+}
\ No newline at end of file
diff --git a/src/routes/user/edit/req/[userToken]/[reqID]/+page.svelte b/src/routes/user/edit/req/[userToken]/[reqID]/+page.svelte
new file mode 100644
index 0000000..cfd715c
--- /dev/null
+++ b/src/routes/user/edit/req/[userToken]/[reqID]/+page.svelte
@@ -0,0 +1,143 @@
+
+
+
+
+
+
Изменение реквизита (ID: {reqID})
+
+
+ {#each reqInfo as req}
+
+
+
+
+
+
+ {/each}
+
+
diff --git a/src/routes/user/neworder/[userToken]/+page.js b/src/routes/user/neworder/[userToken]/+page.js
new file mode 100644
index 0000000..2b81760
--- /dev/null
+++ b/src/routes/user/neworder/[userToken]/+page.js
@@ -0,0 +1,12 @@
+import { browser } from "$app/environment";
+import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth";
+import { makePost } from "$lib/tools/requests/requests";
+import { sayError } from "$lib/tools/toaster/Toaster";
+
+export async function load({ params }) {
+ if(!browser) return;
+ const { userToken } = params;
+ return {
+ token: userToken,
+ };
+}
\ No newline at end of file
diff --git a/src/routes/user/neworder/[userToken]/+page.svelte b/src/routes/user/neworder/[userToken]/+page.svelte
new file mode 100644
index 0000000..8d57ed0
--- /dev/null
+++ b/src/routes/user/neworder/[userToken]/+page.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ {#each { length: numOfOrders } as _, index}
+
+
Заявка #{index+1}
+
+
+
+ {/each}
+
+
diff --git a/src/routes/user/profile/[userToken]/+page.svelte b/src/routes/user/profile/[userToken]/+page.svelte
index d9aa741..2937d55 100644
--- a/src/routes/user/profile/[userToken]/+page.svelte
+++ b/src/routes/user/profile/[userToken]/+page.svelte
@@ -44,7 +44,7 @@
if (userResult.status === 401) {
userInfoReloading = false;
sayError("Данные авторизации устарели");
- window.location.href = "/";
+ redirect("/");
return;
}
if (userResult.error) {
@@ -84,6 +84,7 @@
return;
}
userOrders = result.data.data;
+ if(!Array.isArray(userOrders)) userOrders = [];
numPagesUserOrders = Number(result.data?.pages);
if (numPagesUserOrders === 0) numPagesUserOrders = 1;
console.log(result.data);
@@ -101,7 +102,7 @@
);
if (result.status === 401) {
sayError("Данные авторизации устарели");
- window.location.href = "/";
+ redirect("/");
return;
}
if (result.error) {
@@ -109,6 +110,7 @@
return;
}
userRequisites = result.data;
+ if(!Array.isArray(userDeposits)) userRequisites = [];
console.log(result.data);
}
@@ -134,7 +136,7 @@
);
if (result.status === 401) {
sayError("Данные авторизации устарели");
- window.location.href = "/";
+ redirect("/");
disablePagesUserDeposits = false;
return;
}
@@ -144,6 +146,7 @@
return;
}
userDeposits = result.data.deposits;
+ if(!Array.isArray(userDeposits)) userDeposits = [];
numPagesUserOrders = result.data.pages;
disablePagesUserDeposits = false;
// console.log(result.data, 'depos');
diff --git a/svelte.config.js b/svelte.config.js
index 2ca5922..b8ef852 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -1,13 +1,36 @@
-import adapter from '@sveltejs/adapter-auto';
+// import adapter from '@sveltejs/adapter-auto';
+import adapter from "@sveltejs/adapter-static";
+// import { prerendering } from 'svelte/internal';
/** @type {import('@sveltejs/kit').Config} */
const config = {
- kit: {
- // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
- // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
- // See https://kit.svelte.dev/docs/adapters for more information about adapters.
- adapter: adapter()
- }
+ kit: {
+ // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
+ // See https://kit.svelte.dev/docs/adapters for more information about adapters.
+ adapter: adapter({
+ // default options are shown. On some platforms
+ // these options are set automatically — see below
+ pages: "build",
+ assets: "build",
+ fallback: undefined,
+ precompress: false,
+ strict: true,
+ }),
+ prerender: {
+ // default: true,
+ entries: [
+ "/user/change/sampleToken",
+ "/user/edit/req/sampleToken/sampleReqID",
+ "/user/neworder/sampleToken",
+ "/user/profile/sampleToken",
+ "/",
+ "/login",
+ "/newuser",
+ "/userslist",
+ ],
+ },
+ },
};
export default config;