Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a1b11b811 | ||
|
|
3d6746ed99 | ||
|
|
2a797f8c40 |
@@ -2,7 +2,7 @@
|
||||
|
||||
This is yet another unofficial sync plugin for Obsidian. If you like it or find it useful, please consider give it a [star ](https://github.com/fyears/remotely-save) on Github.
|
||||
|
||||
[](https://github.com/fyears/remotely-save/actions/workflows/auto-build.yml) [](https://github.com/fyears/remotely-save/releases) [](https://github.com/fyears/remotely-save/releases)
|
||||
[](https://github.com/fyears/remotely-save/actions/workflows/auto-build.yml) [](https://github.com/fyears/remotely-save/releases) [](https://github.com/fyears/remotely-save/releases)
|
||||
|
||||
## Disclaimer
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "remotely-save",
|
||||
"name": "Remotely Save",
|
||||
"version": "0.2.6",
|
||||
"version": "0.2.7",
|
||||
"minAppVersion": "0.12.15",
|
||||
"description": "Yet another unofficial plugin allowing users to synchronize notes between local device and the cloud service.",
|
||||
"author": "fyears",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "remotely-save",
|
||||
"version": "0.2.6",
|
||||
"version": "0.2.7",
|
||||
"description": "This is yet another sync plugin for Obsidian app.",
|
||||
"scripts": {
|
||||
"dev": "node esbuild.config.mjs",
|
||||
|
||||
+30
-10
@@ -245,19 +245,33 @@ const getNormPath = (fileOrFolderPath: string, vaultName: string) => {
|
||||
return fileOrFolderPath.slice(`${prefix}/`.length);
|
||||
};
|
||||
|
||||
const constructFromDriveItemToRemoteItemError = (x: DriveItem) => {
|
||||
return `parentPath="${x.parentReference.path}", selfName="${x.name}"`;
|
||||
};
|
||||
|
||||
const fromDriveItemToRemoteItem = (
|
||||
x: DriveItem,
|
||||
vaultName: string
|
||||
): RemoteItem => {
|
||||
let key = "";
|
||||
|
||||
const COMMON_PREFIX = `/drive/root:/Apps/remotely-save/${vaultName}`;
|
||||
const COMMON_PREFIX_OTHERS = `/drive/items/`;
|
||||
if (`${x.parentReference.path}/${x.name}`.startsWith(COMMON_PREFIX)) {
|
||||
key = `${x.parentReference.path}/${x.name}`.substring(
|
||||
COMMON_PREFIX.length + 1
|
||||
);
|
||||
} else if (x.parentReference.path.startsWith(COMMON_PREFIX_OTHERS)) {
|
||||
// possible prefix:
|
||||
// pure english: /drive/root:/Apps/remotely-save/${vaultName}
|
||||
// or localized, e.g.: /drive/root:/应用/remotely-save/${vaultName}
|
||||
const FIRST_COMMON_PREFIX_REGEX = /^\/drive\/root:\/[^\/]+\/remotely-save\//g;
|
||||
|
||||
// another possibile prefix
|
||||
const SECOND_COMMON_PREFIX_RAW = `/drive/items/`;
|
||||
|
||||
const fullPathOriginal = `${x.parentReference.path}/${x.name}`;
|
||||
const matchFirstPrefixRes = fullPathOriginal.match(FIRST_COMMON_PREFIX_REGEX);
|
||||
if (
|
||||
matchFirstPrefixRes !== null &&
|
||||
fullPathOriginal.startsWith(`${matchFirstPrefixRes[0]}${vaultName}`)
|
||||
) {
|
||||
const foundPrefix = `${matchFirstPrefixRes[0]}${vaultName}`;
|
||||
key = fullPathOriginal.substring(foundPrefix.length + 1);
|
||||
} else if (x.parentReference.path.startsWith(SECOND_COMMON_PREFIX_RAW)) {
|
||||
// it's something like
|
||||
// /drive/items/<some_id>!<another_id>:/${vaultName}/<subfolder>
|
||||
// with uri encoded!
|
||||
@@ -270,14 +284,14 @@ const fromDriveItemToRemoteItem = (
|
||||
key = x.name;
|
||||
} else {
|
||||
throw Error(
|
||||
`we meet file/folder and do not know how to deal with it:\n${JSON.stringify(
|
||||
`we meet file/folder and do not know how to deal with it:\n${constructFromDriveItemToRemoteItemError(
|
||||
x
|
||||
)}`
|
||||
);
|
||||
}
|
||||
} else {
|
||||
throw Error(
|
||||
`we meet file/folder and do not know how to deal with it:\n${JSON.stringify(
|
||||
`we meet file/folder and do not know how to deal with it:\n${constructFromDriveItemToRemoteItemError(
|
||||
x
|
||||
)}`
|
||||
);
|
||||
@@ -431,7 +445,7 @@ export const listFromRemote = async (
|
||||
let res = await client.client
|
||||
.api(`/drive/special/approot:/${client.vaultName}:/delta`)
|
||||
.get();
|
||||
const driveItems = res.value as DriveItem[];
|
||||
let driveItems = res.value as DriveItem[];
|
||||
|
||||
while (NEXT_LINK_KEY in res) {
|
||||
res = await client.client.api(res[NEXT_LINK_KEY]).get();
|
||||
@@ -444,6 +458,12 @@ export const listFromRemote = async (
|
||||
await client.saveUpdatedConfigFunc();
|
||||
}
|
||||
|
||||
driveItems = driveItems.map((x) => {
|
||||
const y = cloneDeep(x);
|
||||
y.parentReference.path = y.parentReference.path.replace("/Apps", "/应用");
|
||||
return y;
|
||||
});
|
||||
|
||||
// unify everything to RemoteItem
|
||||
const unifiedContents = driveItems
|
||||
.map((x) => fromDriveItemToRemoteItem(x, client.vaultName))
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"0.2.6": "0.12.15"
|
||||
"0.2.7": "0.12.15"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user