aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/lib')
-rw-r--r--app/src/lib/server/actual.ts21
-rw-r--r--app/src/lib/server/sb1.ts31
-rw-r--r--app/src/lib/ui/button.svelte1
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 {