fix: remove flatname workaround, store Files as real FileNode #379
This commit is contained in:
@@ -5066,6 +5066,36 @@ export class JMAPClient implements IJMAPClient {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch every FileNode in the account in a single query+get round-trip.
|
||||
* Used to build the folder hierarchy client-side from parentId links,
|
||||
* so we never depend on server-side `parentId` filtering being available.
|
||||
*/
|
||||
async listAllFileNodes(): Promise<FileNode[]> {
|
||||
const accountId = this.getFilesAccountId();
|
||||
|
||||
const response = await this.request(
|
||||
[
|
||||
["FileNode/query", { accountId, filter: {} }, "fnq0"],
|
||||
["FileNode/get", { accountId, "#ids": { resultOf: "fnq0", name: "FileNode/query", path: "/ids" }, properties: JMAPClient.FILE_NODE_PROPERTIES }, "fng0"],
|
||||
],
|
||||
this.fileUsing(),
|
||||
);
|
||||
|
||||
const queryResult = response.methodResponses?.find(r => r[0] === "FileNode/query" || (r[0] === "error" && r[2] === "fnq0"));
|
||||
if (queryResult && queryResult[0] === "error") {
|
||||
console.error('[Files] FileNode/query error:', queryResult[1]);
|
||||
throw new Error(queryResult[1]?.description || "FileNode/query failed");
|
||||
}
|
||||
|
||||
const getResult = response.methodResponses?.find(r => r[0] === "FileNode/get" || (r[0] === "error" && r[2] === "fng0"));
|
||||
if (!getResult || getResult[0] === "error") {
|
||||
console.error('[Files] FileNode/get error:', getResult?.[1]);
|
||||
throw new Error(getResult?.[1]?.description || "FileNode list failed");
|
||||
}
|
||||
return (getResult[1].list || []) as FileNode[];
|
||||
}
|
||||
|
||||
async createFileDirectory(name: string, parentId: string | null): Promise<FileNode> {
|
||||
const accountId = this.getFilesAccountId();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user