feat: added sync files to selected local folder function is created. Yarn package manager fixes, styling fixes. Sass module fix. Added Claude model for open router.

This commit is contained in:
muzafferkadir
2024-10-22 01:27:29 +03:00
parent 50a501ecb1
commit 49217f2461
6 changed files with 69 additions and 7 deletions

View File

@@ -280,21 +280,22 @@ export class WorkbenchStore {
for (const [filePath, dirent] of Object.entries(files)) {
if (dirent?.type === 'file' && !dirent.isBinary) {
// Remove '/home/project/' from the beginning of the path
// remove '/home/project/' from the beginning of the path
const relativePath = filePath.replace(/^\/home\/project\//, '');
// Split the path into segments
// split the path into segments
const pathSegments = relativePath.split('/');
// If there's more than one segment, we need to create folders
// if there's more than one segment, we need to create folders
if (pathSegments.length > 1) {
let currentFolder = zip;
for (let i = 0; i < pathSegments.length - 1; i++) {
currentFolder = currentFolder.folder(pathSegments[i])!;
}
currentFolder.file(pathSegments[pathSegments.length - 1], dirent.content);
} else {
// If there's only one segment, it's a file in the root
// if there's only one segment, it's a file in the root
zip.file(relativePath, dirent.content);
}
}
@@ -303,6 +304,35 @@ export class WorkbenchStore {
const content = await zip.generateAsync({ type: 'blob' });
saveAs(content, 'project.zip');
}
async syncFiles(targetHandle: FileSystemDirectoryHandle) {
const files = this.files.get();
const syncedFiles = [];
for (const [filePath, dirent] of Object.entries(files)) {
if (dirent?.type === 'file' && !dirent.isBinary) {
const relativePath = filePath.replace(/^\/home\/project\//, '');
const pathSegments = relativePath.split('/');
let currentHandle = targetHandle;
for (let i = 0; i < pathSegments.length - 1; i++) {
currentHandle = await currentHandle.getDirectoryHandle(pathSegments[i], { create: true });
}
// create or get the file
const fileHandle = await currentHandle.getFileHandle(pathSegments[pathSegments.length - 1], { create: true });
// write the file content
const writable = await fileHandle.createWritable();
await writable.write(dirent.content);
await writable.close();
syncedFiles.push(relativePath);
}
}
return syncedFiles;
}
}
export const workbenchStore = new WorkbenchStore();