forked from gptscript-ai/desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathonedrive.ts
77 lines (70 loc) · 2.04 KB
/
onedrive.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'use server';
import fs from 'fs';
import path from 'path';
import { WORKSPACE_DIR } from '@/config/env';
import { runSyncTool } from '@/actions/knowledge/tool';
export async function isOneDriveConfigured() {
return fs.existsSync(
path.join(
WORKSPACE_DIR(),
'knowledge',
'integrations',
'onedrive',
'metadata.json'
)
);
}
export async function getOneDriveFiles(): Promise<
Map<string, { url: string; fileName: string; displayName: string }>
> {
const dir = path.join(
WORKSPACE_DIR(),
'knowledge',
'integrations',
'onedrive'
);
const metadataFromFile = fs.readFileSync(path.join(dir, 'metadata.json'));
const metadata = JSON.parse(metadataFromFile.toString());
const result = new Map<
string,
{ url: string; fileName: string; displayName: string }
>();
for (const documentID in metadata) {
result.set(path.join(dir, documentID, metadata[documentID].fileName), {
url: metadata[documentID].url,
fileName: metadata[documentID].fileName,
displayName: metadata[documentID].displayName,
});
}
return result;
}
export async function syncSharedLink(link: string): Promise<void> {
const dir = path.join(
WORKSPACE_DIR(),
'knowledge',
'integrations',
'onedrive'
);
const externalLinkFile = path.join(dir, 'externalLinks.json');
if (!fs.existsSync(externalLinkFile)) {
fs.writeFileSync(externalLinkFile, '{}');
}
const externalLink = JSON.parse(fs.readFileSync(externalLinkFile).toString());
externalLink[link] = 'true';
fs.writeFileSync(externalLinkFile, JSON.stringify(externalLink));
await runSyncTool(true, 'onedrive');
return;
}
export async function clearOneDriveFiles(): Promise<void> {
const dir = path.join(
WORKSPACE_DIR(),
'knowledge',
'integrations',
'onedrive'
);
const externalLinkFile = path.join(dir, 'externalLinks.json');
fs.rmSync(externalLinkFile, { recursive: true, force: true });
}
export async function runOneDriveSync(authed: boolean): Promise<void> {
return runSyncTool(authed, 'onedrive');
}