Skip to content

Commit 66f8be0

Browse files
jatezzzclaude
andcommitted
Refactor: Remove IDE SharedPreferences access, enforce plugin isolation
Removed getAppSharedPreferences() from PluginContext to enforce proper data isolation. Plugins should only manage their own preferences via getPluginSharedPreferences(), not access IDE internal settings. Benefits: - Enforces plugin data isolation - Prevents unintended coupling with IDE preferences - Reduces IDE API surface for plugins - Plugins have dedicated storage for their settings Addresses code review feedback from Daniel-ADFA: 'I think plugins should be able to manage their own sharepref, they don't need to access the IDEs' Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 09be6d2 commit 66f8be0

2 files changed

Lines changed: 1 addition & 19 deletions

File tree

‎plugin-api/src/main/kotlin/com/itsaky/androidide/plugins/PluginContext.kt‎

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,9 @@ interface PluginContext {
4040
*/
4141
fun getPluginFilesDir(): File
4242

43-
/**
44-
* Get SharedPreferences from the main application for reading migration data
45-
* Used to read settings from built-in Agent preferences
46-
*
47-
* @param prefsName Name of the preferences file (e.g., "AgentPrefs")
48-
* @return SharedPreferences instance or null if not found
49-
*/
50-
fun getAppSharedPreferences(prefsName: String): android.content.SharedPreferences?
51-
5243
/**
5344
* Get SharedPreferences for the plugin for writing migrated data
54-
* Used to write settings to plugin storage during migration
45+
* Plugins should only manage their own preferences for data isolation
5546
*
5647
* @param prefsName Name of the preferences file (e.g., "AgentSettings")
5748
* @return SharedPreferences instance

‎plugin-manager/src/main/kotlin/com/itsaky/androidide/plugins/manager/context/PluginContextImpl.kt‎

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,6 @@ class PluginContextImpl(
3434
return File(androidContext.filesDir, "plugins/$pluginId").apply { mkdirs() }
3535
}
3636

37-
override fun getAppSharedPreferences(prefsName: String): SharedPreferences? {
38-
return try {
39-
androidContext.getSharedPreferences(prefsName, Context.MODE_PRIVATE)
40-
} catch (e: Exception) {
41-
logger.error("Failed to access app SharedPreferences: $prefsName", e)
42-
null
43-
}
44-
}
45-
4637
override fun getPluginSharedPreferences(prefsName: String): SharedPreferences {
4738
return androidContext.getSharedPreferences("plugin_${pluginId}_${prefsName}", Context.MODE_PRIVATE)
4839
}

0 commit comments

Comments
 (0)