diff --git a/.wundergraph/operations/Cloudron.graphql b/.wundergraph/operations/Cloudron.graphql deleted file mode 100644 index dc03801..0000000 --- a/.wundergraph/operations/Cloudron.graphql +++ /dev/null @@ -1,5 +0,0 @@ -query { - cloudron_getProfile { - email - } -} diff --git a/.wundergraph/operations/getBalance.ts b/.wundergraph/operations/getBalance.ts index a67d680..0077cb8 100644 --- a/.wundergraph/operations/getBalance.ts +++ b/.wundergraph/operations/getBalance.ts @@ -6,15 +6,15 @@ export default createOperation.query({ address: z.string(), }), handler: async ({ input }) => { - console.log('Making request with input:', input); // Log the input + console.log('Making request with input:', input); const { data } = await axios.get('https://api.gnosisscan.io/api', { params: { module: 'account', action: 'balance', address: input.address, - // tag: 'latest', - // apikey: process.env.GNOSISSCAN_API, + tag: 'latest', + apikey: process.env.GNOSISSCAN_API, }, timeout: 10000, }); diff --git a/.wundergraph/operations/getPaperless.ts b/.wundergraph/operations/getPaperless.ts new file mode 100644 index 0000000..f478b8b --- /dev/null +++ b/.wundergraph/operations/getPaperless.ts @@ -0,0 +1,39 @@ +// .wundergraph/operations/getPaperless.ts +import { createOperation, z } from '../generated/wundergraph.factory'; +import axios from 'axios'; + +export default createOperation.query({ + input: z.object({}), + handler: async () => { + console.log('Making request to Paperless API'); + + const { data } = await axios.get('https://paperless.andert.me/api/documents/', { + headers: { + Authorization: process.env.PAPERLESS_TOKEN, + }, + }); + + console.log('Received response:', data.results); + + // Add download link, thumbnail link, preview link, and PDF data to each document + const documentsWithLinksAndData = await Promise.all(data.results.map(async doc => { + const response = await axios.get(`https://paperless.andert.me/api/documents/${doc.id}/preview/`, { + responseType: 'arraybuffer', + headers: { + Authorization: process.env.PAPERLESS_TOKEN, + }, + }); + const pdfData = Buffer.from(response.data, 'binary').toString('base64'); + + return { + ...doc, + downloadLink: `https://paperless.andert.me/api/documents/${doc.id}/download/`, + thumbnailLink: `https://paperless.andert.me/api/documents/${doc.id}/thumb/`, + previewLink: `https://paperless.andert.me/api/documents/${doc.id}/preview/`, + pdfData, + }; + })); + + return documentsWithLinksAndData; + }, +}); \ No newline at end of file diff --git a/.wundergraph/wundergraph.config.ts b/.wundergraph/wundergraph.config.ts index 1918ded..2d649a7 100644 --- a/.wundergraph/wundergraph.config.ts +++ b/.wundergraph/wundergraph.config.ts @@ -26,16 +26,6 @@ const placeholder = introspect.openApiV2({ baseURL: 'https://jsonplaceholder.typicode.com', }); -const cloudron = introspect.openApiV2({ - apiNamespace: 'cloudron', - source: { - kind: "file", - filePath: "./schemas/cloudron.json" - }, - headers: (builder) => builder - .addStaticHeader('Authorization', new EnvironmentVariable('CLOUDRON_API', process.env.CLOUDRON_API)) -}); - const system_db = introspect.graphql({ apiNamespace: 'system_db', loadSchemaFromString: directusSystemSchema, @@ -46,7 +36,7 @@ const system_db = introspect.graphql({ // configureWunderGraph emits the configuration configureWunderGraphApplication({ - apis: [db, system_db, placeholder, cloudron], + apis: [db, system_db, placeholder], server, operations, generate: { diff --git a/package.json b/package.json index c97c897..708d86f 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "path": "^0.12.7", "sqlite3": "^5.1.6", "svelte-kit-cookie-session": "^4.0.0", + "svelte-pdf-simple": "^2.0.0", "url": "^0.11.1", "xstate": "^4.38.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56ebd9b..f0a216d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,6 +88,9 @@ dependencies: svelte-kit-cookie-session: specifier: ^4.0.0 version: 4.0.0 + svelte-pdf-simple: + specifier: ^2.0.0 + version: 2.0.0 url: specifier: ^0.11.1 version: 0.11.1 @@ -6380,7 +6383,7 @@ packages: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 dev: false /astral-regex@1.0.0: @@ -10828,6 +10831,17 @@ packages: through: 2.3.8 dev: false + /pdfjs-dist@2.13.216: + resolution: {integrity: sha512-qn/9a/3IHIKZarTK6ajeeFXBkG15Lg1Fx99PxU09PAU2i874X8mTcHJYyDJxu7WDfNhV6hM7bRQBZU384anoqQ==} + peerDependencies: + worker-loader: ^3.0.8 + peerDependenciesMeta: + worker-loader: + optional: true + dependencies: + web-streams-polyfill: 3.2.1 + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -11462,7 +11476,7 @@ packages: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.4.1 + tslib: 2.6.2 dev: false /receptacle@1.3.2: @@ -12299,6 +12313,14 @@ packages: '@noble/ciphers': 0.2.0 dev: false + /svelte-pdf-simple@2.0.0: + resolution: {integrity: sha512-XiRyw2vWt2VGBx7vpyUcEJ6Ug1T2yboVXVnsiqBmB8ApDxysfi/ju0OfHvHO3Yd6GJiX7hlloOHwIZn8d9FEPQ==} + dependencies: + pdfjs-dist: 2.13.216 + transitivePeerDependencies: + - worker-loader + dev: false + /svelte-preprocess@5.0.4(@babel/core@7.22.17)(postcss@8.4.29)(svelte@3.54.0)(typescript@4.9.5): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} @@ -13097,6 +13119,11 @@ packages: defaults: 1.0.4 dev: false + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /web-vitals@3.4.0: resolution: {integrity: sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==} dev: false diff --git a/src/lib/mockApps.js b/src/lib/mockApps.js index d90d66e..fbad0f5 100644 --- a/src/lib/mockApps.js +++ b/src/lib/mockApps.js @@ -2,6 +2,7 @@ export const mockApps = [ { name: 'cloud' }, { name: 'pass'}, { name: 'directus' }, - { name: 'penpot'} + { name: 'penpot'}, + { name: 'paperless'} ]; \ No newline at end of file diff --git a/src/routes/me/+layout.svelte b/src/routes/me/+layout.svelte index bffc915..ba18288 100644 --- a/src/routes/me/+layout.svelte +++ b/src/routes/me/+layout.svelte @@ -5,12 +5,12 @@ diff --git a/src/routes/me/apps/[name]/+page.svelte b/src/routes/me/apps/[name]/+page.svelte index ac99790..348ebac 100644 --- a/src/routes/me/apps/[name]/+page.svelte +++ b/src/routes/me/apps/[name]/+page.svelte @@ -3,9 +3,8 @@ export let data; - +/> diff --git a/src/routes/me/paperless/+page.svelte b/src/routes/me/paperless/+page.svelte new file mode 100644 index 0000000..7b2ac0b --- /dev/null +++ b/src/routes/me/paperless/+page.svelte @@ -0,0 +1,65 @@ + + + + + +
+
+ {#if $paperlessQuery.isLoading} +

Loading...

+ {:else if $paperlessQuery.error} +
Error: {JSON.stringify($paperlessQuery.error, null, 2)}
+ {:else} + {#each $paperlessQuery.data as document, i} + selectPdf(i)}> +
+

+ {document.archived_file_name} +

+
+
+ {/each} + {/if} +
+
+ {#if selectedPdfUrl} + + {/if} + + + diff --git a/src/routes/me/resttest/+page.svelte b/src/routes/me/resttest/+page.svelte deleted file mode 100644 index 74b7ed3..0000000 --- a/src/routes/me/resttest/+page.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - -
-

Cloudron Test

-
- -
-
- {#if $cloudronQuery.isLoading} -

Loading...

- {:else if $cloudronQuery.error} -
Error: {JSON.stringify($cloudronQuery.error, null, 2)}
- {:else} -
{JSON.stringify($cloudronQuery.data, null, 2)}
- {/if} -
-
-