From ef1bacddc713c8eac92639cdda09001959043843 Mon Sep 17 00:00:00 2001 From: saadberry Date: Thu, 4 Sep 2025 11:51:57 +0500 Subject: [PATCH 01/14] Added alert messages --- src/main/java/org/intellij/sdk/codesync/Constants.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/intellij/sdk/codesync/Constants.java b/src/main/java/org/intellij/sdk/codesync/Constants.java index 19af79b..62969c7 100644 --- a/src/main/java/org/intellij/sdk/codesync/Constants.java +++ b/src/main/java/org/intellij/sdk/codesync/Constants.java @@ -262,6 +262,14 @@ private CustomErrorCodes() { public static final int IS_FROZEN_REPO = 4000; public static final int PRIVATE_REPO_COUNT_LIMIT_REACHED = 4006; } + + public static final class AlertTitles { + public static final String INVALID_PROJECT = "CodeSync: Invalid Project detected."; + } + + public static final class AlertMessages { + public static final String INVALID_PROJECT = "Please open a valid project to use CodeSync’s services."; + } } From 574c90d4390c9e4df9321dd3b0d502aa50cfc496 Mon Sep 17 00:00:00 2001 From: saadberry Date: Thu, 4 Sep 2025 11:52:42 +0500 Subject: [PATCH 02/14] Showing alert message if invalid project is opened --- .../intellij/sdk/codesync/CodeSyncStartupActivity.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java index 5bc0599..214794d 100644 --- a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java +++ b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java @@ -24,6 +24,7 @@ import org.intellij.sdk.codesync.utils.FileUtils; import org.intellij.sdk.codesync.utils.ProjectUtils; import org.jetbrains.annotations.NotNull; +import com.intellij.openapi.ui.Messages; import java.io.IOException; import java.util.List; @@ -38,6 +39,15 @@ public class CodeSyncStartupActivity implements StartupActivity { @Override public void runActivity(@NotNull Project project) { + + String basePath = project.getBasePath(); + if (basePath.startsWith("/tmp/")) { + Messages.showInfoMessage( + AlertMessages.INVALID_PROJECT, + AlertTitles.INVALID_PROJECT + ); + return; + } // Create system directories required by the plugin. createSystemDirectories(); String repoDirPath = ProjectUtils.getRepoPath(project); From bd72f406f92c2b04d7901b4b12f13e3452fc9749 Mon Sep 17 00:00:00 2001 From: saadberry Date: Mon, 8 Sep 2025 22:15:09 +0500 Subject: [PATCH 03/14] Added CodeSyncActionGroup class for CodeSync menu --- .../codesync/actions/CodeSyncActionGroup.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java diff --git a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java new file mode 100644 index 0000000..b3a0c4f --- /dev/null +++ b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java @@ -0,0 +1,71 @@ +package org.intellij.sdk.codesync.actions; + +import com.intellij.openapi.actionSystem.DefaultActionGroup; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import org.intellij.sdk.codesync.state.PluginState; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.intellij.sdk.codesync.state.StateUtils; +import org.intellij.sdk.codesync.state.PluginState; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import org.intellij.sdk.codesync.codeSyncSetup.CodeSyncSetupAction; +import org.intellij.sdk.codesync.utils.ProjectUtils; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import org.intellij.sdk.codesync.utils.ProjectUtils; + + +public class CodeSyncActionGroup extends DefaultActionGroup { + + PluginState pluginState = StateUtils.getGlobalState(); + + private VirtualFile getRepoRoot(AnActionEvent anActionEvent, Project project) { + VirtualFile[] contentRoots = ProjectUtils.getAllContentRoots(project); + + if (contentRoots.length > 1) { + // If more than one module are present in the project then a file must be open to show repo setup action + // this is needed because without the file we can not determine the correct repo sync. + VirtualFile virtualFile = anActionEvent.getRequiredData(CommonDataKeys.PSI_FILE).getVirtualFile(); + return ProjectUtils.getRepoRoot(virtualFile, project); + } else if (contentRoots.length == 1) { + // If there is only one module then we can simply show the repo playback for the only repo present. + // Disable the button if repo is not in sync. + return contentRoots[0]; + } + + return null; + } + + @Override + public void update(@NotNull AnActionEvent e) { + Project project = e.getProject(); + + boolean visible = true; + + // Hide group if account is deactivated + if (StateUtils.getGlobalState().isAccountDeactivated) { + visible = false; + } + + // Hide group if invalid project path + if (project == null || (project.getBasePath() != null && project.getBasePath().startsWith("/tmp/"))) { + visible = false; + } + + VirtualFile repoRoot = this.getRepoRoot(e, project); + System.out.println(repoRoot); + if (repoRoot == null) { + visible = false; + } + + // A single file is opened, no need to sync it. + System.out.println(repoRoot.isDirectory()); + if (!repoRoot.isDirectory()) { + visible = false; + } + + e.getPresentation().setVisible(visible); + e.getPresentation().setEnabled(visible); + } +} From a166e97ed4b67d5bc961409a6058e2dcb91c0bf3 Mon Sep 17 00:00:00 2001 From: saadberry Date: Mon, 8 Sep 2025 22:15:47 +0500 Subject: [PATCH 04/14] Updated plugin.xml to point to CodeSyncActionGroup --- src/main/resources/META-INF/plugin.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 6f656ba..51cadc7 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -124,7 +124,10 @@ topic="com.intellij.openapi.project.ProjectManagerListener"/> - From c5525a9fc6c0426ff1bca94b99f83bbb43f180af Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 13:05:42 +0500 Subject: [PATCH 05/14] Removing alert logic CodeSyncStartupActivity --- .../sdk/codesync/CodeSyncStartupActivity.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java index 214794d..14cf8b5 100644 --- a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java +++ b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java @@ -34,20 +34,13 @@ import static org.intellij.sdk.codesync.Utils.*; import static org.intellij.sdk.codesync.Utils.ChangesHandler; import static org.intellij.sdk.codesync.codeSyncSetup.CodeSyncSetup.createSystemDirectories; +import org.intellij.sdk.codesync.state.StateUtils; +import org.intellij.sdk.codesync.state.PluginState; public class CodeSyncStartupActivity implements StartupActivity { @Override public void runActivity(@NotNull Project project) { - - String basePath = project.getBasePath(); - if (basePath.startsWith("/tmp/")) { - Messages.showInfoMessage( - AlertMessages.INVALID_PROJECT, - AlertTitles.INVALID_PROJECT - ); - return; - } // Create system directories required by the plugin. createSystemDirectories(); String repoDirPath = ProjectUtils.getRepoPath(project); From f77c67f00b82ed74f2b13c11377434d9c9779c73 Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 13:06:43 +0500 Subject: [PATCH 06/14] Updating Constants --- src/main/java/org/intellij/sdk/codesync/Constants.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/Constants.java b/src/main/java/org/intellij/sdk/codesync/Constants.java index 62969c7..94d1528 100644 --- a/src/main/java/org/intellij/sdk/codesync/Constants.java +++ b/src/main/java/org/intellij/sdk/codesync/Constants.java @@ -264,11 +264,12 @@ private CustomErrorCodes() { } public static final class AlertTitles { - public static final String INVALID_PROJECT = "CodeSync: Invalid Project detected."; + public static final String CODESYNC = "CodeSync"; } public static final class AlertMessages { - public static final String INVALID_PROJECT = "Please open a valid project to use CodeSync’s services."; + public static final String OPEN_FOLDER = "In order to use CodeSync’s features, you can open a folder."; + public static final String ACCOUNT_DEACTIVATED = "Your account is deactivated. In order to use CodeSync’s features, please use an active account."; } } From 3b2ad17a7eeed6c3be96183981b2fe266b583da9 Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 13:08:25 +0500 Subject: [PATCH 07/14] Updating CodeSyncActionGroup --- .../sdk/codesync/actions/CodeSyncActionGroup.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java index b3a0c4f..db442e1 100644 --- a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java +++ b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java @@ -14,7 +14,8 @@ import org.intellij.sdk.codesync.utils.ProjectUtils; import com.intellij.openapi.actionSystem.CommonDataKeys; import org.intellij.sdk.codesync.utils.ProjectUtils; - +import com.intellij.openapi.ui.Messages; +import org.intellij.sdk.codesync.Constants.*; public class CodeSyncActionGroup extends DefaultActionGroup { @@ -46,6 +47,11 @@ public void update(@NotNull AnActionEvent e) { // Hide group if account is deactivated if (StateUtils.getGlobalState().isAccountDeactivated) { visible = false; + // Display alert message + Messages.showInfoMessage( + AlertMessages.ACCOUNT_DEACTIVATED, + AlertTitles.CODESYNC + ); } // Hide group if invalid project path @@ -54,15 +60,18 @@ public void update(@NotNull AnActionEvent e) { } VirtualFile repoRoot = this.getRepoRoot(e, project); - System.out.println(repoRoot); if (repoRoot == null) { visible = false; } // A single file is opened, no need to sync it. - System.out.println(repoRoot.isDirectory()); if (!repoRoot.isDirectory()) { visible = false; + // Display alert message + Messages.showInfoMessage( + AlertMessages.OPEN_FOLDER, + AlertTitles.CODESYNC + ); } e.getPresentation().setVisible(visible); From d7105a59e2ad20e8182f82f5d4e0d391186b3a93 Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 15:32:22 +0500 Subject: [PATCH 08/14] Added class field wasAlertShown --- .../codesync/actions/CodeSyncActionGroup.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java index db442e1..51700f0 100644 --- a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java +++ b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java @@ -20,6 +20,7 @@ public class CodeSyncActionGroup extends DefaultActionGroup { PluginState pluginState = StateUtils.getGlobalState(); + private boolean wasAlertShown = false; private VirtualFile getRepoRoot(AnActionEvent anActionEvent, Project project) { VirtualFile[] contentRoots = ProjectUtils.getAllContentRoots(project); @@ -48,10 +49,13 @@ public void update(@NotNull AnActionEvent e) { if (StateUtils.getGlobalState().isAccountDeactivated) { visible = false; // Display alert message - Messages.showInfoMessage( - AlertMessages.ACCOUNT_DEACTIVATED, - AlertTitles.CODESYNC - ); + if (!wasAlertShown) { + Messages.showInfoMessage( + AlertMessages.ACCOUNT_DEACTIVATED, + AlertTitles.CODESYNC + ); + wasAlertShown = true; + } } // Hide group if invalid project path @@ -68,10 +72,13 @@ public void update(@NotNull AnActionEvent e) { if (!repoRoot.isDirectory()) { visible = false; // Display alert message - Messages.showInfoMessage( - AlertMessages.OPEN_FOLDER, - AlertTitles.CODESYNC - ); + if (!wasAlertShown) { + Messages.showInfoMessage( + AlertMessages.OPEN_FOLDER, + AlertTitles.CODESYNC + ); + wasAlertShown = true; + } } e.getPresentation().setVisible(visible); From cf1f3862bac7121b4146fac4c3feb9db2ad30848 Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 15:33:40 +0500 Subject: [PATCH 09/14] Removing unused imports --- .../org/intellij/sdk/codesync/CodeSyncStartupActivity.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java index 14cf8b5..5bc0599 100644 --- a/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java +++ b/src/main/java/org/intellij/sdk/codesync/CodeSyncStartupActivity.java @@ -24,7 +24,6 @@ import org.intellij.sdk.codesync.utils.FileUtils; import org.intellij.sdk.codesync.utils.ProjectUtils; import org.jetbrains.annotations.NotNull; -import com.intellij.openapi.ui.Messages; import java.io.IOException; import java.util.List; @@ -34,8 +33,6 @@ import static org.intellij.sdk.codesync.Utils.*; import static org.intellij.sdk.codesync.Utils.ChangesHandler; import static org.intellij.sdk.codesync.codeSyncSetup.CodeSyncSetup.createSystemDirectories; -import org.intellij.sdk.codesync.state.StateUtils; -import org.intellij.sdk.codesync.state.PluginState; public class CodeSyncStartupActivity implements StartupActivity { From 66f982ce15ee74a925861cb263a48d2dfb6ecc70 Mon Sep 17 00:00:00 2001 From: saadberry Date: Tue, 9 Sep 2025 15:39:11 +0500 Subject: [PATCH 10/14] Updated CHANGELOG + build.gradle version --- CHANGELOG.md | 3 +++ build.gradle | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baca713..4f2aa33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [4.9.0] - 2025-09-09 +- Disables CodeSync group if an invalid project is opened + ## [4.8.0] - 2025-03-11 - Modified video link in README and plugin.xml diff --git a/build.gradle b/build.gradle index 5a02fd4..a05aa43 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { } group 'com.codesync' -version '4.8.0' +version '4.9.0' compileJava.options.encoding = "UTF-8" From c065c22a7d005eb71b6653be7afae98745bccfbe Mon Sep 17 00:00:00 2001 From: saadberry Date: Wed, 10 Sep 2025 18:27:06 +0500 Subject: [PATCH 11/14] Replacing alert messages with Status bar alerts --- .../codesync/actions/CodeSyncActionGroup.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java index 51700f0..3c017fa 100644 --- a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java +++ b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java @@ -17,11 +17,24 @@ import com.intellij.openapi.ui.Messages; import org.intellij.sdk.codesync.Constants.*; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.StatusBar; +import com.intellij.openapi.wm.WindowManager; + +import org.intellij.sdk.codesync.NotificationManager; + public class CodeSyncActionGroup extends DefaultActionGroup { PluginState pluginState = StateUtils.getGlobalState(); private boolean wasAlertShown = false; + public void showStatusBarMessage(String alertMessage, Project project) { + StatusBar statusBar = WindowManager.getInstance().getStatusBar(project); + if (statusBar != null) { + statusBar.setInfo(alertMessage); + } + } + private VirtualFile getRepoRoot(AnActionEvent anActionEvent, Project project) { VirtualFile[] contentRoots = ProjectUtils.getAllContentRoots(project); @@ -49,13 +62,7 @@ public void update(@NotNull AnActionEvent e) { if (StateUtils.getGlobalState().isAccountDeactivated) { visible = false; // Display alert message - if (!wasAlertShown) { - Messages.showInfoMessage( - AlertMessages.ACCOUNT_DEACTIVATED, - AlertTitles.CODESYNC - ); - wasAlertShown = true; - } + showStatusBarMessage(AlertMessages.ACCOUNT_DEACTIVATED, project); } // Hide group if invalid project path @@ -72,13 +79,7 @@ public void update(@NotNull AnActionEvent e) { if (!repoRoot.isDirectory()) { visible = false; // Display alert message - if (!wasAlertShown) { - Messages.showInfoMessage( - AlertMessages.OPEN_FOLDER, - AlertTitles.CODESYNC - ); - wasAlertShown = true; - } + showStatusBarMessage(AlertMessages.OPEN_FOLDER, project); } e.getPresentation().setVisible(visible); From 8dc74e933369f97b0d7aafc9ff047f37c82fe5e0 Mon Sep 17 00:00:00 2001 From: saadberry Date: Wed, 10 Sep 2025 19:10:14 +0500 Subject: [PATCH 12/14] AlertMessages -> StatusBarMessages --- src/main/java/org/intellij/sdk/codesync/Constants.java | 10 +++------- .../sdk/codesync/actions/CodeSyncActionGroup.java | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/Constants.java b/src/main/java/org/intellij/sdk/codesync/Constants.java index 94d1528..9ec2d92 100644 --- a/src/main/java/org/intellij/sdk/codesync/Constants.java +++ b/src/main/java/org/intellij/sdk/codesync/Constants.java @@ -263,13 +263,9 @@ private CustomErrorCodes() { public static final int PRIVATE_REPO_COUNT_LIMIT_REACHED = 4006; } - public static final class AlertTitles { - public static final String CODESYNC = "CodeSync"; - } - - public static final class AlertMessages { - public static final String OPEN_FOLDER = "In order to use CodeSync’s features, you can open a folder."; - public static final String ACCOUNT_DEACTIVATED = "Your account is deactivated. In order to use CodeSync’s features, please use an active account."; + public static final class StatusBarMessages { + public static final String OPEN_FOLDER = "CodeSync Information: In order to use CodeSync’s features, you can open a folder."; + public static final String ACCOUNT_DEACTIVATED = "CodeSync Information: Your account is deactivated. In order to use CodeSync’s features, please use an active account."; } } diff --git a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java index 3c017fa..418da31 100644 --- a/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java +++ b/src/main/java/org/intellij/sdk/codesync/actions/CodeSyncActionGroup.java @@ -62,7 +62,7 @@ public void update(@NotNull AnActionEvent e) { if (StateUtils.getGlobalState().isAccountDeactivated) { visible = false; // Display alert message - showStatusBarMessage(AlertMessages.ACCOUNT_DEACTIVATED, project); + showStatusBarMessage(StatusBarMessages.ACCOUNT_DEACTIVATED, project); } // Hide group if invalid project path @@ -79,7 +79,7 @@ public void update(@NotNull AnActionEvent e) { if (!repoRoot.isDirectory()) { visible = false; // Display alert message - showStatusBarMessage(AlertMessages.OPEN_FOLDER, project); + showStatusBarMessage(StatusBarMessages.OPEN_FOLDER, project); } e.getPresentation().setVisible(visible); From 61fe9a1c071abdededdc26c490e37008d81d58da Mon Sep 17 00:00:00 2001 From: saadberry Date: Mon, 15 Sep 2025 15:58:34 +0500 Subject: [PATCH 13/14] Updated Status bar messages --- src/main/java/org/intellij/sdk/codesync/Constants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/intellij/sdk/codesync/Constants.java b/src/main/java/org/intellij/sdk/codesync/Constants.java index 9ec2d92..8edfacb 100644 --- a/src/main/java/org/intellij/sdk/codesync/Constants.java +++ b/src/main/java/org/intellij/sdk/codesync/Constants.java @@ -264,8 +264,8 @@ private CustomErrorCodes() { } public static final class StatusBarMessages { - public static final String OPEN_FOLDER = "CodeSync Information: In order to use CodeSync’s features, you can open a folder."; - public static final String ACCOUNT_DEACTIVATED = "CodeSync Information: Your account is deactivated. In order to use CodeSync’s features, please use an active account."; + public static final String OPEN_FOLDER = "CodeSync notification: CodeSync only works with folders. Please open a folder to start syncing."; + public static final String ACCOUNT_DEACTIVATED = "CodeSync notification: Your account is deactivated. In order to use CodeSync’s features, please use an active account."; } } From 4428871a4eb0792741a05aad1d6c55d971c368f2 Mon Sep 17 00:00:00 2001 From: saadberry Date: Thu, 25 Sep 2025 21:30:36 +0500 Subject: [PATCH 14/14] Updated date in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f2aa33..59567da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [4.9.0] - 2025-09-09 +## [4.9.0] - 2025-09-25 - Disables CodeSync group if an invalid project is opened ## [4.8.0] - 2025-03-11