@@ -6,12 +6,16 @@ import com.fsck.k9.mailstore.LockableDatabase
6
6
import com.fsck.k9.mailstore.toDatabaseFolderType
7
7
8
8
internal class CreateFolderOperations (private val lockableDatabase : LockableDatabase ) {
9
+ init {
10
+ removeGmailPrefixFromFolders()
11
+ }
12
+
9
13
fun createFolders (folders : List <CreateFolderInfo >) {
10
14
lockableDatabase.execute(true ) { db ->
11
15
for (folder in folders) {
12
16
val folderSettings = folder.settings
13
17
val values = ContentValues ().apply {
14
- put(" name" , folder.name)
18
+ put(" name" , folder.name.replace( " \\ [(Gmail|Google Mail)]/ " .toRegex(), " " ) )
15
19
put(" visible_limit" , folderSettings.visibleLimit)
16
20
put(" integrate" , folderSettings.integrate)
17
21
put(" top_group" , folderSettings.inTopGroup)
@@ -28,4 +32,34 @@ internal class CreateFolderOperations(private val lockableDatabase: LockableData
28
32
}
29
33
}
30
34
}
35
+
36
+ private fun removeGmailPrefixFromFolders () {
37
+ lockableDatabase.execute(false ) { db ->
38
+ val cursor = db.query(
39
+ " folders" ,
40
+ arrayOf(" id" , " name" ),
41
+ " name LIKE ? OR name LIKE ?" ,
42
+ arrayOf(" %[Gmail]/%" , " %[Google Mail]/%" ),
43
+ null ,
44
+ null ,
45
+ null ,
46
+ )
47
+
48
+ while (cursor.moveToNext()) {
49
+ val id = cursor.getLong(cursor.getColumnIndexOrThrow(" id" ))
50
+ val name = cursor.getString(cursor.getColumnIndexOrThrow(" name" ))
51
+ val updatedName = name
52
+ .replace(" [Gmail]/" , " " )
53
+ .replace(" [Google Mail]/" , " " )
54
+
55
+ val values = ContentValues ().apply {
56
+ put(" name" , updatedName)
57
+ }
58
+
59
+ db.update(" folders" , values, " id = ?" , arrayOf(id.toString()))
60
+ }
61
+
62
+ cursor.close()
63
+ }
64
+ }
31
65
}
0 commit comments