Skip to content

Commit a7ccbda

Browse files
committed
feat: clear access token when setting are cleared
1 parent 2d72e6d commit a7ccbda

File tree

1 file changed

+63
-41
lines changed

1 file changed

+63
-41
lines changed

src/main.tsx

Lines changed: 63 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import '@logseq/libs';
2-
import moment from 'moment';
32
import TickTick from './ticktick/ticktick';
43
import { NewTask, Subtask } from './ticktick/task';
54
import { logseq as PackageLogseq } from '../package.json';
@@ -9,7 +8,7 @@ import { BlockEntity } from '@logseq/libs/dist/LSPlugin';
98
const pluginId = PackageLogseq.id;
109
const ticktick = new TickTick();
1110

12-
const priorityToNum = (text: string): 0 | 1 | 3 | 5 => {
11+
const priorityToNum = (text: string): 0 | 1 | 3 | 5 => {
1312
const priority = text.match(/\[#([A-C])\]/);
1413
if (priority) {
1514
switch (priority[1]) {
@@ -27,11 +26,11 @@ const priorityToNum = (text: string): 0 | 1 | 3 | 5 => {
2726
const priorityToTag = (priority: 0 | 1 | 3 | 5 | undefined): string => {
2827
switch (priority) {
2928
case 5:
30-
return ' [#A] ';
29+
return '[#A] ';
3130
case 3:
32-
return ' [#B] ';
31+
return '[#B] ';
3332
case 1:
34-
return ' [#C] ';
33+
return '[#C] ';
3534
}
3635
return '';
3736
};
@@ -49,11 +48,15 @@ const parseTask = (text: string): NewTask => {
4948
};
5049
};
5150

52-
const getTreeContent: (block: BlockEntity) => Promise<BlockEntity | null> = async (block) => {
53-
const blockEntity = await logseq.Editor.getBlock(block.uuid, { includeChildren: true });
51+
const getTreeContent: (
52+
block: BlockEntity,
53+
) => Promise<BlockEntity | null> = async (block) => {
54+
const blockEntity = await logseq.Editor.getBlock(block.uuid, {
55+
includeChildren: true,
56+
});
5457

5558
return blockEntity;
56-
}
59+
};
5760

5861
const flattenTree: (node: BlockEntity) => BlockEntity[] = (node) => {
5962
const result: BlockEntity[] = [node];
@@ -65,40 +68,57 @@ const flattenTree: (node: BlockEntity) => BlockEntity[] = (node) => {
6568
}
6669

6770
return result;
68-
}
71+
};
72+
73+
const onSettingsChanged = async () => {
74+
const settings = getTickTickSettings();
75+
if (
76+
settings.accessToken === '' &&
77+
settings.accessCode !== '' &&
78+
settings.clientId !== '' &&
79+
settings.clientSecret !== '' &&
80+
settings.redirectUri !== ''
81+
) {
82+
const accessToken = await ticktick.getAccessToken(
83+
settings.clientId,
84+
settings.clientSecret,
85+
settings.accessCode,
86+
settings.redirectUri,
87+
);
88+
logseq.updateSettings({ access_token: accessToken });
89+
logseq.UI.showMsg(
90+
'TickTick access token updated successfully.',
91+
'success',
92+
{
93+
timeout: 5000,
94+
},
95+
);
96+
}
97+
98+
if (
99+
settings.accessToken !== '' &&
100+
settings.accessCode === '' &&
101+
settings.clientId === '' &&
102+
settings.clientSecret === '' &&
103+
settings.redirectUri === ''
104+
) {
105+
logseq.updateSettings({ access_token: '' });
106+
logseq.UI.showMsg(
107+
'TickTick access token cleared successfully.',
108+
'success',
109+
{
110+
timeout: 5000,
111+
},
112+
);
113+
}
114+
};
69115

70116
const main: () => Promise<void> = async () => {
71117
console.info(`#${pluginId}: MAIN`);
72118

73119
logseq.useSettingsSchema(settingsSchema);
120+
logseq.onSettingsChanged(onSettingsChanged);
74121
let settings = getTickTickSettings();
75-
76-
logseq.onSettingsChanged(() => {
77-
settings = getTickTickSettings();
78-
79-
if (
80-
settings.accessToken === '' &&
81-
settings.accessCode !== '' &&
82-
settings.clientId !== '' &&
83-
settings.clientSecret !== '' &&
84-
settings.redirectUri !== ''
85-
) {
86-
ticktick
87-
.getAccessToken(
88-
settings.clientId,
89-
settings.clientSecret,
90-
settings.accessCode,
91-
settings.redirectUri,
92-
)
93-
.then((accessToken) => {
94-
logseq.updateSettings({ accessToken });
95-
logseq.UI.showMsg(
96-
'TickTick access token updated successfully.',
97-
'success',
98-
);
99-
});
100-
}
101-
});
102122

103123
if (settings.accessToken !== '') {
104124
ticktick.setAccessToken(settings.accessToken);
@@ -120,26 +140,28 @@ const main: () => Promise<void> = async () => {
120140
const flatContentTree = flattenTree(contentTree);
121141
console.log(flatContentTree);
122142

123-
const subtasks: Subtask[] = flatContentTree.slice(1).map(child => {
143+
const subtasks: Subtask[] = flatContentTree.slice(1).map((child) => {
124144
const subtask: Subtask = {
125145
title: child.content.replace(/TODO/, '').replace(/\[#([A-C])\]/, ''),
126146
};
127147
return subtask;
128148
});
129149

130150
const task = parseTask(flatContentTree[0]?.content || '');
131-
task.items = subtasks;
151+
task.items = subtasks;
132152

133153
try {
134154
const newTask = await ticktick.createTask(task);
135155
await logseq.Editor.updateBlock(
136156
blockEntity.uuid,
137-
`TODO${priorityToTag(newTask.priority)}[${newTask.title}](${newTask.taskUrl})`,
157+
`TODO ${priorityToTag(newTask.priority)}[${newTask.title}](${
158+
newTask.taskUrl
159+
})`,
138160
);
139161
} catch (error) {
140162
logseq.UI.showMsg('TickTick access token is invalid.', 'error');
141163
}
142164
});
143-
}
165+
};
144166

145-
logseq.ready(main).catch(console.error);
167+
logseq.ready(main).catch(console.error);

0 commit comments

Comments
 (0)