From ab68a585320c29804bccb4ddaa05372669d50cb9 Mon Sep 17 00:00:00 2001 From: pengzhile Date: Tue, 19 Oct 2021 15:17:13 +0800 Subject: [PATCH] add more reset records --- README.md | 2 +- build.gradle | 4 ++- .../intellij/ier/common/KeepCondition.java | 5 +++ .../intellij/ier/common/PreferenceRecord.java | 16 ++++++++-- .../intellij/ier/common/Resetter.java | 32 ++++++++++++++++--- .../intellij/ier/listener/PluginListener.java | 7 +++- .../intellij/ier/ui/form/MainForm.form | 12 ++++++- .../intellij/ier/ui/form/MainForm.java | 11 ++++++- 8 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 src/main/java/io/zhile/research/intellij/ier/common/KeepCondition.java diff --git a/README.md b/README.md index 2c50d4a..ae905df 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Reset Your IDE Eval Information -1. Download and install plugin from [Download Link](https://plugins.zhile.io/files/ide-eval-resetter-2.3.2-10863c.zip). +1. Download and install plugin from [Download Link](https://plugins.zhile.io/files/ide-eval-resetter-2.3.3-3d9348.zip). * Alternative installation method: * Add "Custom Plugin Repository": `https://plugins.zhile.io` manually (`Settings/Preferences` -> `Plugins`) * Search and install plugin: `IDE Eval Reset` diff --git a/build.gradle b/build.gradle index 752d865..1dccaee 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'io.zhile.research.intellij' -version '2.3.2' +version '2.3.3' sourceCompatibility = 1.7 targetCompatibility = 1.7 @@ -29,6 +29,8 @@ intellij { patchPluginXml { changeNotes = """
+Release v2.3.3
+  1. add more reset records
 Release v2.3.2
   1. fix plugin version
 Release v2.3.1
diff --git a/src/main/java/io/zhile/research/intellij/ier/common/KeepCondition.java b/src/main/java/io/zhile/research/intellij/ier/common/KeepCondition.java
new file mode 100644
index 0000000..bbe368d
--- /dev/null
+++ b/src/main/java/io/zhile/research/intellij/ier/common/KeepCondition.java
@@ -0,0 +1,5 @@
+package io.zhile.research.intellij.ier.common;
+
+public interface KeepCondition {
+    boolean needKeep();
+}
diff --git a/src/main/java/io/zhile/research/intellij/ier/common/PreferenceRecord.java b/src/main/java/io/zhile/research/intellij/ier/common/PreferenceRecord.java
index 2674a96..bbadbda 100644
--- a/src/main/java/io/zhile/research/intellij/ier/common/PreferenceRecord.java
+++ b/src/main/java/io/zhile/research/intellij/ier/common/PreferenceRecord.java
@@ -11,14 +11,20 @@ public class PreferenceRecord implements EvalRecord {
     private final String key;
     private final String value;
     private final boolean isRaw;
+    private final KeepCondition keepCondition;
 
     public PreferenceRecord(String key) {
-        this(key, false);
+        this(key, false, null);
     }
 
     public PreferenceRecord(String key, boolean isRaw) {
+        this(key, isRaw, null);
+    }
+
+    public PreferenceRecord(String key, boolean isRaw, KeepCondition keepCondition) {
         this.key = key;
         this.isRaw = isRaw;
+        this.keepCondition = keepCondition;
         this.value = isRaw ? Preferences.userRoot().get(key, DEFAULT_VALUE) : Prefs.get(key, DEFAULT_VALUE);
     }
 
@@ -32,6 +38,10 @@ public class PreferenceRecord implements EvalRecord {
 
     @Override
     public void reset() throws Exception {
+        if (null != keepCondition && keepCondition.needKeep()) {
+            return;
+        }
+
         if (isRaw) {
             Preferences.userRoot().remove(key);
         } else {
@@ -43,6 +53,8 @@ public class PreferenceRecord implements EvalRecord {
 
     @Override
     public String toString() {
-        return type + ": " + key + " = " + (null == value ? "" : value);
+        String v = null == value ? "" : value;
+
+        return type + ": " + key + " = " + v.substring(0, Math.min(36, v.length()));
     }
 }
diff --git a/src/main/java/io/zhile/research/intellij/ier/common/Resetter.java b/src/main/java/io/zhile/research/intellij/ier/common/Resetter.java
index 77bc26c..5d11661 100644
--- a/src/main/java/io/zhile/research/intellij/ier/common/Resetter.java
+++ b/src/main/java/io/zhile/research/intellij/ier/common/Resetter.java
@@ -22,10 +22,9 @@ import java.util.prefs.Preferences;
 public class Resetter {
     private static final String DEFAULT_VENDOR = "jetbrains";
     private static final String OLD_MACHINE_ID_KEY = "JetBrains.UserIdOnMachine";
-    private static final String NEW_MACHINE_ID_KEY = DEFAULT_VENDOR + ".user_id_on_machine";
-    private static final String DEVICE_ID_KEY = DEFAULT_VENDOR + ".device_id";
     private static final String EVAL_KEY = "evlsprt";
-    private static final String AUTO_RESET_KEY = Constants.PLUGIN_PREFS_PREFIX + ".auto_reset." + Constants.IDE_NAME_LOWER + "." + Constants.IDE_HASH;
+    private static final String AUTO_RESET_KEY = Constants.PLUGIN_PREFS_PREFIX + ".auto_reset." + Constants.IDE_NAME_LOWER;
+    private static final String AUTO_LOGOUT_KEY = Constants.PLUGIN_PREFS_PREFIX + ".auto_logout";
 
     private static final Method METHOD_GET_PRODUCT_CODE = ReflectionHelper.getMethod(IdeaPluginDescriptor.class, "getProductCode");
     private static final Method METHOD_GET_RELEASE_DATE = ReflectionHelper.getMethod(IdeaPluginDescriptor.class, "getReleaseDate");
@@ -92,10 +91,24 @@ public class Resetter {
             }
         }
 
+        KeepCondition keepCondition = new KeepCondition() {
+            @Override
+            public boolean needKeep() {
+                return !isAutoLogout();
+            }
+        };
         PreferenceRecord[] prefsValue = new PreferenceRecord[]{
                 new PreferenceRecord(OLD_MACHINE_ID_KEY, true),
-                new PreferenceRecord(NEW_MACHINE_ID_KEY),
-                new PreferenceRecord(DEVICE_ID_KEY),
+                new PreferenceRecord(DEFAULT_VENDOR + ".user_id_on_machine"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".device_id"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".marketplacedownloads_device_id"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".mlse_device_id"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".auth-tokens.account_jetbrains_com"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".feature_usage_event_log_salt"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".mlse_feature_usage_event_log_salt"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".jetprofile.idtoken"),
+                new PreferenceRecord(DEFAULT_VENDOR + ".jetprofile.userid", false, keepCondition),
+                new PreferenceRecord(DEFAULT_VENDOR + ".jetprofile.userlogin", false, keepCondition),
         };
         for (PreferenceRecord record : prefsValue) {
             if (record.getValue() == null) {
@@ -226,6 +239,15 @@ public class Resetter {
         syncPrefs();
     }
 
+    public static boolean isAutoLogout() {
+        return Prefs.getBoolean(AUTO_LOGOUT_KEY, false);
+    }
+
+    public static void setAutoLogout(boolean isAutoClear) {
+        Prefs.putBoolean(AUTO_LOGOUT_KEY, isAutoClear);
+        syncPrefs();
+    }
+
     public static void syncPrefs() {
         try {
             Preferences.userRoot().sync();
diff --git a/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java b/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
index 4e65c68..c9139e5 100644
--- a/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
+++ b/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
@@ -48,7 +48,12 @@ public class PluginListener implements DynamicPluginListener, PluginStateListene
         }
 
         ActionManager.getInstance().getAction(Constants.RESET_ACTION_ID);
-        NotificationHelper.showInfo(null, "Plugin installed successfully! Now enjoy it~
For more information, visit here."); + + String link = "https://zhile.io/2020/11/18/jetbrains-eval-reset-da33a93d.html"; + String autoResetTip = "Auto reset switch state: " + (Resetter.isAutoReset() ? "on" : "off"); + String autoLogoutTip = "Auto logout switch state: " + (Resetter.isAutoLogout() ? "on" : "off"); + String content = String.format("Plugin installed successfully!
For more information, visit this link.

%s
%s", link, autoResetTip, autoLogoutTip); + NotificationHelper.showInfo(null, content); } @Override diff --git a/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.form b/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.form index c04ddaa..4543f70 100644 --- a/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.form +++ b/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.form @@ -2,7 +2,7 @@
- + @@ -79,22 +79,32 @@ + + + + + + + + + + diff --git a/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.java b/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.java index 2ee8edb..72dcfc9 100644 --- a/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.java +++ b/src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.java @@ -27,6 +27,7 @@ public class MainForm { private JLabel lblLastResetTimeLabel; private JCheckBox chkResetAuto; private JLabel lblVersion; + private JCheckBox chkAutoLogout; private DialogWrapper dialogWrapper; private DefaultListModel listModel = new DefaultListModel<>(); @@ -78,6 +79,14 @@ public class MainForm { lblVersion.setText("v" + PluginHelper.getPluginVersion()); + chkAutoLogout.setSelected(Resetter.isAutoLogout()); + addActionEventListener(chkAutoLogout, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Resetter.setAutoLogout(chkAutoLogout.isSelected()); + } + }, disposable); + chkResetAuto.setSelected(Resetter.isAutoReset()); addActionEventListener(chkResetAuto, new ActionListener() { @Override @@ -108,7 +117,7 @@ public class MainForm { if (null != dialogWrapper) { dialogWrapper.getRootPane().setDefaultButton(btnReset); - rootPanel.setMinimumSize(new Dimension(600, 240)); + rootPanel.setMinimumSize(new Dimension(640, 260)); } return rootPanel;