diff options
Diffstat (limited to 'app/src/lib')
| -rw-r--r-- | app/src/lib/server/actual.ts | 21 | ||||
| -rw-r--r-- | app/src/lib/server/sb1.ts | 31 | ||||
| -rw-r--r-- | app/src/lib/ui/button.svelte | 1 |
3 files changed, 37 insertions, 16 deletions
diff --git a/app/src/lib/server/actual.ts b/app/src/lib/server/actual.ts new file mode 100644 index 0000000..7291aad --- /dev/null +++ b/app/src/lib/server/actual.ts @@ -0,0 +1,21 @@ +import { ACTUAL_HOST, ACTUAL_PASS } from "$env/static/private"; +import * as actual from "@actual-app/api" +import { existsSync, mkdirSync } from "node:fs"; +import path from "node:path"; + +async function init_actual() { + const dataDir = path.resolve(import.meta.dirname, "actualDataDir"); + + if (!existsSync(dataDir)) mkdirSync(dataDir); + + return actual.init({ + password: ACTUAL_PASS, + serverURL: ACTUAL_HOST, + dataDir: dataDir + }) +} + +export async function get_budgets() { + await init_actual() + return await actual.getBudgets() +}
\ No newline at end of file diff --git a/app/src/lib/server/sb1.ts b/app/src/lib/server/sb1.ts index c060af5..1d6b869 100644 --- a/app/src/lib/server/sb1.ts +++ b/app/src/lib/server/sb1.ts @@ -24,12 +24,7 @@ type Transaction = { const auth = { async is_ready(): Promise<boolean> { const token = await this.get_access_token() - const ping = await fetch("https://developer.sparebank1.no/helloworld/ping", { - headers: { - "Authorization": "Bearer " + token - } - }) - return ping.ok + return token !== "" }, async get_auth_info() { const entity = await db.select({ @@ -39,7 +34,8 @@ const auth = { }).from(syncSession) if (!entity[0]) return undefined const { tokens, accessTokenCreated, refreshTokenCreated } = entity[0] - const tokensParsed = JSON.parse(tokens ?? "") + if (!tokens) return undefined + const tokensParsed = JSON.parse(tokens) if (!tokensParsed) return undefined const refreshTokenExpires = Temporal.Instant.fromEpochMilliseconds(Number(refreshTokenCreated)).add({ seconds: tokensParsed?.refresh_token_expires_in }) const accessTokenExpires = Temporal.Instant.fromEpochMilliseconds(Number(accessTokenCreated)).add({ seconds: tokensParsed?.expires_in }) @@ -56,22 +52,20 @@ const auth = { }) const authorizeUrl = new URL("https://api.sparebank1.no/oauth/authorize"); - authorizeUrl.searchParams.set("client_id", SB1_ID); authorizeUrl.searchParams.set("state", state); authorizeUrl.searchParams.set("redirect_uri", SB1_REDIRECT_URI); authorizeUrl.searchParams.set("finInst", SB1_FIN_INST); authorizeUrl.searchParams.set("response_type", "code"); - return authorizeUrl.toString() }, async get_access_token() { const entity = await db.select({ tokens: syncSession.tokens }).from(syncSession) - const { tokens } = entity[0] - if (!tokens) return null - const parsed = JSON.parse(tokens) as Sb1Tokens + const res = entity[0] + if (!res?.tokens) return null + const parsed = JSON.parse(res.tokens) as Sb1Tokens return parsed.access_token as string }, async refresh_tokem() { @@ -127,15 +121,20 @@ const data = { async get_transactions(accountKey: string) { const token = await auth.get_access_token() if (token) return undefined - const url = new URL( - "https://api.sparebank1.no/personal/banking/transactions", - ); + const url = new URL("https://api.sparebank1.no/personal/banking/transactions/transactions") + console.log(token) url.searchParams.set("accountKey", accountKey); - const response = await fetch(url, { + console.log(accountKey) + const response = await fetch("https://api.sparebank1.no/personal/banking/transactions" + new URLSearchParams({ + "accountKey": accountKey, + "fromDate": "", + "toDate": "" + }), { headers: { Authorization: `Bearer ${token}`, }, }); + const json = await response.json() return (await response.json())["transactions"] as Transaction[]; } diff --git a/app/src/lib/ui/button.svelte b/app/src/lib/ui/button.svelte index 313cd90..8c66bd2 100644 --- a/app/src/lib/ui/button.svelte +++ b/app/src/lib/ui/button.svelte @@ -26,6 +26,7 @@ display: flex; gap: 3px; transition: 0.1s all ease; + height: fit-content; &:hover, &:focus { |
