feat: add bookmark_notes to proto and DataSource with auto-delete on unbookmark

Co-Authored-By: Claude <noreply@anthropic.com>
pull/2125/head
Rohit Karadkar 2 weeks ago
parent 7d45eae4f8
commit 01ed90dcde

@ -49,5 +49,8 @@ message UserPreferences {
bool use_dynamic_color = 19;
// NEXT AVAILABLE ID: 21
// Key: news resource ID, Value: note text
map<string, string> bookmark_notes = 21;
// NEXT AVAILABLE ID: 22
}

@ -128,6 +128,7 @@ class NiaPreferencesDataSource @Inject constructor(
bookmarkedNewsResourceIds.put(newsResourceId, true)
} else {
bookmarkedNewsResourceIds.remove(newsResourceId)
bookmarkNotes.remove(newsResourceId)
}
}
}
@ -136,6 +137,26 @@ class NiaPreferencesDataSource @Inject constructor(
}
}
suspend fun setBookmarkNote(newsResourceId: String, note: String) {
try {
userPreferences.updateData {
it.copy { bookmarkNotes.put(newsResourceId, note) }
}
} catch (ioException: IOException) {
Log.e("NiaPreferences", "Failed to update bookmark note", ioException)
}
}
suspend fun removeBookmarkNote(newsResourceId: String) {
try {
userPreferences.updateData {
it.copy { bookmarkNotes.remove(newsResourceId) }
}
} catch (ioException: IOException) {
Log.e("NiaPreferences", "Failed to remove bookmark note", ioException)
}
}
suspend fun setNewsResourceViewed(newsResourceId: String, viewed: Boolean) {
setNewsResourcesViewed(listOf(newsResourceId), viewed)
}

@ -86,4 +86,7 @@ class NiaPreferencesDataSourceTest {
subject.setDynamicColorPreference(true)
assertTrue(subject.userData.first().useDynamicColor)
}
// TODO(Task 2): Add tests for setBookmarkNote, removeBookmarkNote, and
// bookmarkNotes auto-delete on unbookmark once UserData exposes bookmarkNotes.
}

Loading…
Cancel
Save