Feature: Implement read write access checking on Project Directory and report any issues in home page (#5676)

* chore: skeleton to detect read write directories and if we have access to notify user

* chore: adding buttont to easily change project directory

* chore: cleaning up home page error bar layout and button

* fix: adding clearer comments

* fix: ugly console debugging but I need to save off progress

* fix: removing project dir check on empty string

* fix: debug progress to save off listProjects once. Still bugged...

* fix: more hard coded debugging to get project loading optimizted

* fix: yarp, we got another one bois

* fix: cleaning up code

* fix: massive bug comment to warn devs about chokidar bugs

* fix: returning error instead of throwing

* fix: cleaning up PR

* fix: fixed loading the projects when the project directory changes

* fix: remove testing code

* fix: only skip directories if you can access the project directory since we don't need to view them

* fix: unit tests, turning off noisey localhost vitest garbage

* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)

* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)

* fix: deleted testing state

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com>
Co-authored-by: Pierre Jacquier <pierre@zoo.dev>
This commit is contained in:
Kevin Nadro
2025-03-24 14:57:01 -05:00
committed by GitHub
parent 65c455ae7c
commit fdeb2b3f49
17 changed files with 207 additions and 51 deletions

View File

@ -25,6 +25,7 @@ const mockElectron = {
},
getPath: vi.fn(),
kittycad: vi.fn(),
canReadWriteDirectory: vi.fn(),
}
vi.stubGlobal('window', { electron: mockElectron })
@ -87,6 +88,12 @@ describe('desktop utilities', () => {
return path in mockFileSystem
})
mockElectron.canReadWriteDirectory.mockImplementation(
async (path: string) => {
return { value: path in mockFileSystem, error: undefined }
}
)
// Mock stat to always resolve with dummy metadata
mockElectron.stat.mockResolvedValue({
mtimeMs: 123,