todo_compose's People
todo_compose's Issues
Handle deep-links
Launch URL to individual task. Target task should be highlighted. #4 (comment)
Prompt for DB error
If I'm to implement a retry function, I'd need to store my transaction either in a buffer or a stack.
Related to #5
Implement progress indicator derived from ViewModel coroutine state
Top-level exception recovery
- Top-level catch
- Error report route
Implement 2-pane layout and adaptive navigation components
https://m3.material.io/foundations/layout/applying-layout/window-size-classes
https://developer.android.com/jetpack/compose/layouts/adaptive
Compact & Medium
- TopAppBar
- Title doubles as selected tasks counter
- Actions
- LazyColumn of TaskItem
Expanded
- TopAppBar
- Title
- Actions
- Left pane: LazyColumn of TaskItem
- Right pane: EditTask or selected tasks counter
improve: Restore TextField focus state after configuration change
Current implementation loses TextField focus after configuration change. The cursor location (selection) is preserved via rememberSaveable
, but that wouldn't be helpful if the focus is lost and the customer will have to click into the TextField which would then point the cursor to a new location.
Putting this in the backlog since I haven't found a trivial way to restore focus state (esp. for a large form).
Tasks preview parameter provider
feat: l10n
Translation
- Localized strings for zh-CN
- Localized strings for zh-TW
- Localized strings for fr-FR
Locale optimization
- FTS4 Chinese tokenizer
Related to #11
Implement search with suggestions
- Search bar UI
- Compact: SearchBar
- Medium & Expanded: DockedSearchBar
- Connect SearchBar visibility with Scaffold body
- Click search result navigates to task
- Sqlite FTS4
- Run query with
LaunchedEffect
, implement 200ms delay on keystroke before launching query
SearchBar
https://m3.material.io/components/search/overview
https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#SearchBar
Nested scrolling
https://developer.android.com/jetpack/compose/touch-input/pointer-input/scroll
https://developer.android.com/reference/kotlin/androidx/compose/material3/TopAppBarScrollBehavior
FTS4
https://developer.android.com/training/data-storage/room/defining-data#fts
https://www.sqlite.org/fts3.html
perf: Move text buffer MutableState in ViewModel
Polish interaction model
Ref. Reminders.app
Accessibility sweep
- Tooltips
- Content description
- Keyboard navigation
- Indication
-
\t
andS-\t
should trigger focus node change
- Optimize for screenreader (TalkBack)
test: Unit test Room
In-memory todo list functionality
Implement local persistent storage with Room
Migrate to Gradle version catalog
Ref: Compose Activity template from Hedgehog Canary 12
End-to-end instrumented test
- Fake repo
- Test create task
- Test edit task
- Test tick task
- Test select & delete task
- Set up CI
Implement single undo temp-buffer
Display SnackBar with an "undo" button after a successful transaction.
Remodel UI state
Bundling data in ADT causes more problem than it solves. Consider unbundling data to observables and an external enum field.
Migrate navigation to type safe wrapper
Navigation & state-hoisting looks a bit spaghetti at the moment. Should try to scope navigation to screen-level subgraphs. Not too enthusiastic with Jetpack Navigation Compose, the fact I'd need to use BackStackEntry to retrieve some value from a destination is bizarre.
- TaskList -> EditTask should pass the task ID, while EditTask handles fetching the task itself. Move state to ViewModel.
- Move tasks subgraph to NavGraphBuilder extension functions
Tune animations
- Apply M3 animation tokens
- TaskItem should expand vertically transitioning to EditTask destination
feat: Reminder
- Add DateTime field for Task
- Implement native notifications
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.