Skip to content

Commit d1b1a34

Browse files
committed
feat: remove gmail prefix in folder structure
1 parent 9e3d6c4 commit d1b1a34

File tree

7 files changed

+49
-1
lines changed

7 files changed

+49
-1
lines changed

legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,10 @@ public void setFlagForThreads(final LegacyAccount account, final List<Long> thre
10791079
);
10801080
}
10811081

1082+
public void replaceGmailPrefixFromFolders(LegacyAccount account) {
1083+
messageStoreManager.getMessageStore(account).removeGmailPrefixFromFolders();
1084+
}
1085+
10821086
private void setFlagSynchronous(final LegacyAccount account, final List<Long> ids,
10831087
final Flag flag, final boolean newState, final boolean threadedList) {
10841088

legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/ListenableMessageStore.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ class ListenableMessageStore(private val messageStore: MessageStore) : MessageSt
1212
notifyFolderSettingsChanged()
1313
}
1414

15+
override fun removeGmailPrefixFromFolders() {
16+
messageStore.removeGmailPrefixFromFolders()
17+
}
18+
1519
override fun deleteFolders(folderServerIds: List<String>) {
1620
messageStore.deleteFolders(folderServerIds)
1721
notifyFolderSettingsChanged()

legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/MessageStore.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ interface MessageStore {
176176
*/
177177
fun createFolders(folders: List<CreateFolderInfo>)
178178

179+
fun removeGmailPrefixFromFolders()
180+
179181
/**
180182
* Retrieve information about a folder.
181183
*

legacy/storage/src/main/java/com/fsck/k9/storage/messages/K9MessageStore.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ class K9MessageStore(
142142
createFolderOperations.createFolders(folders)
143143
}
144144

145+
override fun removeGmailPrefixFromFolders() {
146+
updateFolderOperations.removeGmailPrefixFromFolders()
147+
}
148+
145149
override fun <T> getFolder(folderId: Long, mapper: FolderMapper<T>): T? {
146150
return retrieveFolderOperations.getFolder(folderId, mapper)
147151
}

legacy/storage/src/main/java/com/fsck/k9/storage/messages/UpdateFolderOperations.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,36 @@ internal class UpdateFolderOperations(private val lockableDatabase: LockableData
1919
}
2020
}
2121

22+
fun removeGmailPrefixFromFolders() {
23+
lockableDatabase.execute(false) { db ->
24+
val cursor = db.query(
25+
"folders",
26+
arrayOf("id", "name"),
27+
"name LIKE ? OR name LIKE ?",
28+
arrayOf("%[Gmail]/%", "%[Google Mail]/%"),
29+
null,
30+
null,
31+
null,
32+
)
33+
34+
while (cursor.moveToNext()) {
35+
val id = cursor.getLong(cursor.getColumnIndexOrThrow("id"))
36+
val name = cursor.getString(cursor.getColumnIndexOrThrow("name"))
37+
val updatedName = name
38+
.replace("[Gmail]/", "")
39+
.replace("[Google Mail]/", "")
40+
41+
val values = ContentValues().apply {
42+
put("name", updatedName)
43+
}
44+
45+
db.update("folders", values, "id = ?", arrayOf(id.toString()))
46+
}
47+
48+
cursor.close()
49+
}
50+
}
51+
2252
fun updateFolderSettings(folderDetails: FolderDetails) {
2353
lockableDatabase.execute(false) { db ->
2454
val contentValues = ContentValues().apply {

legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/DefaultDisplayFolderRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class DefaultDisplayFolderRepository(
4242
DisplayFolder(
4343
folder = Folder(
4444
id = folder.id,
45-
name = folder.name,
45+
name = folder.name.replace("\\[(Gmail|Google Mail)]/".toRegex(), ""),
4646
type = FolderTypeMapper.folderTypeOf(account, folder.id),
4747
isLocalOnly = folder.isLocalOnly,
4848
),

legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ class MessageListFragment :
198198
super.onCreate(savedInstanceState)
199199
setHasOptionsMenu(true)
200200

201+
accountManager.getAccounts().forEach {
202+
messagingController.replaceGmailPrefixFromFolders(it)
203+
}
204+
201205
restoreInstanceState(savedInstanceState)
202206
val error = decodeArguments()
203207
if (error != null) {

0 commit comments

Comments
 (0)