From bac470277177657a0cef621ef0c61a195f1a8971 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Mon, 11 Nov 2024 22:24:27 +0100 Subject: [PATCH 1/4] Add show_hidden_files filed to workspace --- backend/internal/db/migrations.go | 3 +++ backend/internal/db/users.go | 4 ++-- backend/internal/db/workspaces.go | 22 +++++++++++++--------- backend/internal/models/workspace.go | 2 ++ 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/backend/internal/db/migrations.go b/backend/internal/db/migrations.go index 84560f5..11cfc74 100644 --- a/backend/internal/db/migrations.go +++ b/backend/internal/db/migrations.go @@ -59,6 +59,9 @@ var migrations = []Migration{ FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE ); + -- Add show_hidden_files field to workspaces + ALTER TABLE workspaces ADD COLUMN show_hidden_files BOOLEAN NOT NULL DEFAULT 0; + -- Add indexes for performance CREATE INDEX idx_sessions_user_id ON sessions(user_id); CREATE INDEX idx_sessions_expires_at ON sessions(expires_at); diff --git a/backend/internal/db/users.go b/backend/internal/db/users.go index 3c7e40f..6a040fb 100644 --- a/backend/internal/db/users.go +++ b/backend/internal/db/users.go @@ -66,12 +66,12 @@ func (db *DB) createWorkspaceTx(tx *sql.Tx, workspace *models.Workspace) error { result, err := tx.Exec(` INSERT INTO workspaces ( user_id, name, - theme, auto_save, + theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, workspace.UserID, workspace.Name, - workspace.Theme, workspace.AutoSave, + workspace.Theme, workspace.AutoSave, workspace.ShowHiddenFiles, workspace.GitEnabled, workspace.GitURL, workspace.GitUser, workspace.GitToken, workspace.GitAutoCommit, workspace.GitCommitMsgTemplate, ) diff --git a/backend/internal/db/workspaces.go b/backend/internal/db/workspaces.go index f2d1815..d5b6cef 100644 --- a/backend/internal/db/workspaces.go +++ b/backend/internal/db/workspaces.go @@ -21,11 +21,11 @@ func (db *DB) CreateWorkspace(workspace *models.Workspace) error { result, err := db.Exec(` INSERT INTO workspaces ( - user_id, name, theme, auto_save, + user_id, name, theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - workspace.UserID, workspace.Name, workspace.Theme, workspace.AutoSave, + workspace.UserID, workspace.Name, workspace.Theme, workspace.AutoSave, workspace.ShowHiddenFiles, workspace.GitEnabled, workspace.GitURL, workspace.GitUser, encryptedToken, workspace.GitAutoCommit, workspace.GitCommitMsgTemplate, ) @@ -49,7 +49,7 @@ func (db *DB) GetWorkspaceByID(id int) (*models.Workspace, error) { err := db.QueryRow(` SELECT id, user_id, name, created_at, - theme, auto_save, + theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template FROM workspaces @@ -57,7 +57,7 @@ func (db *DB) GetWorkspaceByID(id int) (*models.Workspace, error) { id, ).Scan( &workspace.ID, &workspace.UserID, &workspace.Name, &workspace.CreatedAt, - &workspace.Theme, &workspace.AutoSave, + &workspace.Theme, &workspace.AutoSave, &workspace.ShowHiddenFiles, &workspace.GitEnabled, &workspace.GitURL, &workspace.GitUser, &encryptedToken, &workspace.GitAutoCommit, &workspace.GitCommitMsgTemplate, ) @@ -82,7 +82,7 @@ func (db *DB) GetWorkspaceByName(userID int, workspaceName string) (*models.Work err := db.QueryRow(` SELECT id, user_id, name, created_at, - theme, auto_save, + theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template FROM workspaces @@ -90,7 +90,7 @@ func (db *DB) GetWorkspaceByName(userID int, workspaceName string) (*models.Work userID, workspaceName, ).Scan( &workspace.ID, &workspace.UserID, &workspace.Name, &workspace.CreatedAt, - &workspace.Theme, &workspace.AutoSave, + &workspace.Theme, &workspace.AutoSave, &workspace.ShowHiddenFiles, &workspace.GitEnabled, &workspace.GitURL, &workspace.GitUser, &encryptedToken, &workspace.GitAutoCommit, &workspace.GitCommitMsgTemplate, ) @@ -121,6 +121,7 @@ func (db *DB) UpdateWorkspace(workspace *models.Workspace) error { name = ?, theme = ?, auto_save = ?, + show_hidden_files = ?, git_enabled = ?, git_url = ?, git_user = ?, @@ -131,6 +132,7 @@ func (db *DB) UpdateWorkspace(workspace *models.Workspace) error { workspace.Name, workspace.Theme, workspace.AutoSave, + workspace.ShowHiddenFiles, workspace.GitEnabled, workspace.GitURL, workspace.GitUser, @@ -166,7 +168,7 @@ func (db *DB) GetWorkspacesByUserID(userID int) ([]*models.Workspace, error) { var encryptedToken string err := rows.Scan( &workspace.ID, &workspace.UserID, &workspace.Name, &workspace.CreatedAt, - &workspace.Theme, &workspace.AutoSave, + &workspace.Theme, &workspace.AutoSave, &workspace.ShowHiddenFiles, &workspace.GitEnabled, &workspace.GitURL, &workspace.GitUser, &encryptedToken, &workspace.GitAutoCommit, &workspace.GitCommitMsgTemplate, ) @@ -193,6 +195,7 @@ func (db *DB) UpdateWorkspaceSettings(workspace *models.Workspace) error { SET theme = ?, auto_save = ?, + show_hidden_files = ?, git_enabled = ?, git_url = ?, git_user = ?, @@ -202,6 +205,7 @@ func (db *DB) UpdateWorkspaceSettings(workspace *models.Workspace) error { WHERE id = ?`, workspace.Theme, workspace.AutoSave, + workspace.ShowHiddenFiles, workspace.GitEnabled, workspace.GitURL, workspace.GitUser, @@ -255,7 +259,7 @@ func (db *DB) GetAllWorkspaces() ([]*models.Workspace, error) { rows, err := db.Query(` SELECT id, user_id, name, created_at, - theme, auto_save, + theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template FROM workspaces`, @@ -271,7 +275,7 @@ func (db *DB) GetAllWorkspaces() ([]*models.Workspace, error) { var encryptedToken string err := rows.Scan( &workspace.ID, &workspace.UserID, &workspace.Name, &workspace.CreatedAt, - &workspace.Theme, &workspace.AutoSave, + &workspace.Theme, &workspace.AutoSave, &workspace.ShowHiddenFiles, &workspace.GitEnabled, &workspace.GitURL, &workspace.GitUser, &encryptedToken, &workspace.GitAutoCommit, &workspace.GitCommitMsgTemplate, ) diff --git a/backend/internal/models/workspace.go b/backend/internal/models/workspace.go index 16e9081..9f9e814 100644 --- a/backend/internal/models/workspace.go +++ b/backend/internal/models/workspace.go @@ -14,6 +14,7 @@ type Workspace struct { // Integrated settings Theme string `json:"theme" validate:"oneof=light dark"` AutoSave bool `json:"autoSave"` + ShowHiddenFiles bool `json:"showHiddenFiles"` GitEnabled bool `json:"gitEnabled"` GitURL string `json:"gitUrl" validate:"required_if=GitEnabled true"` GitUser string `json:"gitUser" validate:"required_if=GitEnabled true"` @@ -29,6 +30,7 @@ func (w *Workspace) Validate() error { func (w *Workspace) GetDefaultSettings() { w.Theme = "light" w.AutoSave = false + w.ShowHiddenFiles = false w.GitEnabled = false w.GitURL = "" w.GitUser = "" From 03cdb133e7cb6d7117dbd72f2f965cf0e741ebe3 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Tue, 12 Nov 2024 20:14:58 +0100 Subject: [PATCH 2/4] Fix get workspace db query --- backend/internal/db/workspaces.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/internal/db/workspaces.go b/backend/internal/db/workspaces.go index d5b6cef..68be97a 100644 --- a/backend/internal/db/workspaces.go +++ b/backend/internal/db/workspaces.go @@ -150,7 +150,7 @@ func (db *DB) GetWorkspacesByUserID(userID int) ([]*models.Workspace, error) { rows, err := db.Query(` SELECT id, user_id, name, created_at, - theme, auto_save, + theme, auto_save, show_hidden_files, git_enabled, git_url, git_user, git_token, git_auto_commit, git_commit_msg_template FROM workspaces From d11525732d356589264860259853ab3f1e725a62 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Tue, 12 Nov 2024 20:15:12 +0100 Subject: [PATCH 3/4] Filter hidden files on frontend --- frontend/src/components/files/FileTree.jsx | 9 ++++++++- frontend/src/components/layout/Sidebar.jsx | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/files/FileTree.jsx b/frontend/src/components/files/FileTree.jsx index ae2e3ac..280ce31 100644 --- a/frontend/src/components/files/FileTree.jsx +++ b/frontend/src/components/files/FileTree.jsx @@ -65,10 +65,17 @@ const Node = ({ node, style, dragHandle }) => { ); }; -const FileTree = ({ files, handleFileSelect }) => { +const FileTree = ({ files, handleFileSelect, showHiddenFiles }) => { const target = useRef(null); const size = useSize(target); + files = files.filter((file) => { + if (file.name.startsWith('.') && !showHiddenFiles) { + return false; + } + return true; + }); + return (
{ ); From 1b58b693d0a428327e806c9233fd617aaee47975 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Tue, 12 Nov 2024 20:27:56 +0100 Subject: [PATCH 4/4] Add show hidden files toggle to settings --- .../settings/workspace/EditorSettings.jsx | 21 ++++++++++++++++--- .../settings/workspace/WorkspaceSettings.jsx | 5 +++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/settings/workspace/EditorSettings.jsx b/frontend/src/components/settings/workspace/EditorSettings.jsx index 8449544..13a76d2 100644 --- a/frontend/src/components/settings/workspace/EditorSettings.jsx +++ b/frontend/src/components/settings/workspace/EditorSettings.jsx @@ -1,11 +1,16 @@ import React from 'react'; -import { Text, Switch, Tooltip, Group, Box, Title } from '@mantine/core'; +import { Text, Switch, Tooltip, Group, Box } from '@mantine/core'; -const EditorSettings = ({ autoSave, onAutoSaveChange }) => { +const EditorSettings = ({ + autoSave, + showHiddenFiles, + onAutoSaveChange, + onShowHiddenFilesChange, +}) => { return ( - + Auto Save { /> + + + Show Hidden Files + + onShowHiddenFilesChange(event.currentTarget.checked) + } + /> + ); }; diff --git a/frontend/src/components/settings/workspace/WorkspaceSettings.jsx b/frontend/src/components/settings/workspace/WorkspaceSettings.jsx index 9a9a78d..703d503 100644 --- a/frontend/src/components/settings/workspace/WorkspaceSettings.jsx +++ b/frontend/src/components/settings/workspace/WorkspaceSettings.jsx @@ -67,6 +67,7 @@ const WorkspaceSettings = () => { name: currentWorkspace.name, theme: currentWorkspace.theme, autoSave: currentWorkspace.autoSave, + showHiddenFiles: currentWorkspace.showHiddenFiles, gitEnabled: currentWorkspace.gitEnabled, gitUrl: currentWorkspace.gitUrl, gitUser: currentWorkspace.gitUser, @@ -185,6 +186,10 @@ const WorkspaceSettings = () => { onAutoSaveChange={(value) => handleInputChange('autoSave', value) } + showHiddenFiles={state.localSettings.showHiddenFiles} + onShowHiddenFilesChange={(value) => + handleInputChange('showHiddenFiles', value) + } />