Add setting to format json strings when viewing a document

This commit is contained in:
alexweininger 2021-06-17 16:07:34 -07:00
parent 2e77f93759
commit 87c0d61ed3
2 changed files with 28 additions and 1 deletions

View file

@ -726,6 +726,11 @@
"type": "string", "type": "string",
"default": "", "default": "",
"markdownDescription": "Project id of the active project, see [docs](https://github.com/streamlux/vscode-appwrite/) for more information." "markdownDescription": "Project id of the active project, see [docs](https://github.com/streamlux/vscode-appwrite/) for more information."
},
"appwrite.formatJsonStrings": {
"type": "boolean",
"default": true,
"markdownDescription": "Format JSON strings when viewing documents"
} }
} }
} }

View file

@ -1,8 +1,30 @@
import { workspace } from "vscode";
import { DocumentTreeItem } from "../../tree/database/DocumentTreeItem"; import { DocumentTreeItem } from "../../tree/database/DocumentTreeItem";
import { openReadOnlyJson } from "../../ui/openReadonlyContent"; import { openReadOnlyJson } from "../../ui/openReadonlyContent";
function parseJSONString(str: string): { valid: boolean; value: any } {
try {
return { value: JSON.parse(str), valid: true };
} catch (e) {
return { value: str, valid: false };
}
}
export async function viewDocumentAsJson(documentTreeItem: DocumentTreeItem): Promise<void> { export async function viewDocumentAsJson(documentTreeItem: DocumentTreeItem): Promise<void> {
const documentId = documentTreeItem.document["$id"]; const document = documentTreeItem.document;
const documentId = document["$id"];
const formatJsonStrings = workspace.getConfiguration("appwrite").get<Boolean>("formatJsonStrings");
if (formatJsonStrings) {
Object.entries(document).forEach(([key, value]) => {
if (typeof value === "string") {
const result = parseJSONString(value);
document[key] = result;
}
});
}
await openReadOnlyJson( await openReadOnlyJson(
{ {
label: documentId, label: documentId,