Commit Graph

207 Commits

Author SHA1 Message Date
Lucas.Xu
5f8ef3856a
feat: initial version for collab document (#4937)
* feat: initial version for collab document

* feat: show sync indicator

* feat: add sync document feature flag

* fix: rust ci

* chore: remove unused code

* chore: update doc_bloc.dart
2024-03-21 13:26:48 +08:00
Lucas.Xu
ef9891abfe
feat: support private section (#4882) 2024-03-21 12:02:03 +08:00
Lucas.Xu
7375349626
fix: legacy bugs on mobile (#4927) 2024-03-18 14:06:12 +08:00
Richard Shiue
b557f89829
refactor: group controller traits (#4880)
* chore: remove async trait

* chore: require From<AnyMap> for trait TypeOption

* refactor: simplify group controller by removing GroupController trait

* chore: rename GroupControllerOperation trait to GroupController

* chore: add some docs

* chore: remove plural struct and use Vec directly

* chore: unnecessary mut

* chore: use same name to indicate passthrough

* chore: remove unused trait

* chore: rename group context to group controller context

* chore: remove group name

* chore: move type option interceptor to GroupCustomize and split off delegates for group context and group controller

* chore: adapt tests to changes

* chore: adapt flutter frontend to changes

* chore: code cleanup

* chore: fix clippy and adapt tauri frontend to changes

* chore: group controller code clean up

* chore: no need to pass cell data when moving row

* chore: rename some functions and variables

* chore: remove content filter
2024-03-16 17:18:40 +08:00
Richard Shiue
25d4b4f718
chore: revamp mobile url editor (#4602)
* chore: revamp mobile url editor

* chore: add i18n

* chore: use shared url launcher

* chore: translation bump

* chore: add a toast notification after URL is copied to clipboard

* chore: listen to onchanged

* chore: improve text field editing experience

* chore: disable quick action buttons if url cell data is empty

* chore: apply suggestions from code review

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>

* chore: provide the bloc and watch changes

---------

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>
2024-03-14 09:36:29 +08:00
Richard Shiue
574cca0a8b
fix: bottom sheet color and sort ui imrprovement (#4849) 2024-03-08 10:16:03 +08:00
Lucas.Xu
6bac0412eb
fix: v0.5.1 issues (#4844)
* chore: improve clear cache hint text

* fix: remove color tab in image picker
2024-03-07 23:13:04 +08:00
Richard Shiue
677617dcf2
fix: mobile grid launch review (#4839)
* fix: mobile database sort editor not working on prod

* fix: don't pop after creating field
2024-03-07 17:32:24 +08:00
Mathias Mogensen
f5cb8b6d25
fix: image url check for embed link (#4826)
* fix: image url check in for embed link

* chore: move all patterns to shared

* test: prefer enterText over manipulating widget
2024-03-06 16:31:30 +01:00
Richard Shiue
3b0d82287d
fix: some mobile ui bugs (#4823)
* fix: select option editor mobile

* chore: field type icon
2024-03-05 21:45:39 +08:00
Richard Shiue
ff8eb0d479
chore: mobile grid dark mode improvements (#4821)
* chore: field type grid

* chore: don't allow hiding primary field

* chore: bottom sheets

* chore: checklist bottom sheet
2024-03-05 15:44:16 +08:00
Lucas.Xu
c8e86f4f26
feat: open workspace, rename workspace and update workspace icon (#4818)
* feat: support opening a workspace

* feat: support renaming a workspace

* fix: rename issue

* fix: rename issues

* feat: refactor menu bloc

* test: add collaborative workspace test

* test: add open workspace integration tet

* test: add delete workspace integration tet

* chore: turn off collab workspace feature
2024-03-05 13:51:03 +08:00
Lucas.Xu
8944edf75f
feat: support clearing caches and fix unable to load image (#4809)
* feat: support clearing caches

* fix: try to clear the image cache when loading failed.

* feat: clear cache on mobile

* chore: add error log
2024-03-04 12:24:25 +08:00
Mathias Mogensen
63464cbf2e
fix: launch url on all platforms (#4797)
* fix: error handled launchUrl

* chore: update links to use new subdomain

* feat: show toast if onFailure is not provided
2024-03-03 22:04:59 +01:00
Mathias Mogensen
2d6856a23d
fix: edit column sheet uniform ui (#4774) 2024-02-28 22:04:16 +08:00
Mathias Mogensen
af12beb1c3
fix: remove empty space if no email (#4777) 2024-02-28 13:23:06 +01:00
Lucas.Xu
980bebf86a
fix: mobile UI regression (#4754)
* fix: aa menu item selected status

* feat: support selecting word on iOS throught long pressing

* chore: update editor version

* feat: update add block menu colors

* feat: add scrollbar in bottom sheet

* fix: aa menu should not dimiss after changing block type

* fix: add link menu ui issues

* feat: sync bius status

* Update frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mobile_toolbar_v3/appflowy_mobile_toolbar_item.dart

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>

* chore: update editor version

* fix: flutter analyze

---------

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>
2024-02-28 13:32:24 +08:00
Richard Shiue
74233d2606
fix: mobile regression (#4747) 2024-02-27 10:51:32 +08:00
Lucas.Xu
3454af1caa
chore: update privacy and terms link (#4742) 2024-02-26 15:29:55 +08:00
Richard Shiue
daedf95c95
fix: some mobile database bugs (#4738)
* chore: no autofocus on field name

* refactor: one, two, many

* chore: reduce spacing between tabbar header and grid header

* fix: update field type

* fix: cannot edit view name

* fix: title for select field type bottom sheet

* fix: forget checks, just do it
2024-02-26 15:13:38 +08:00
Mathias Mogensen
609557c357
feat: word and char count (#4705)
* feat: word and char count

* chore: lints after merge

* feat: add create time of view in more action

* fix: missing comma lint

* feat: add duplicate/delete + database view more

* fix: dispose logic

* feat: code cleanup

* fix: add false for isDocument in databases

* feat: register view info bloc on plugin basis

* fix: accidental removal

* chore: clean up

* fix: add ViewInfoBloc above Row Document Editor

* chore: final clean up
2024-02-25 16:46:13 +01:00
Richard Shiue
537fa52e77
chore: move database domain code to its own folder (#4556) 2024-02-25 18:38:18 +08:00
Richard Shiue
d861ce6227
fix: mobile view and field list bottom sheets (#4727) 2024-02-25 11:51:18 +08:00
Richard Shiue
f5cc6521fb
chore: clean up db sort blocs (#4725) 2024-02-24 22:55:22 +08:00
Lucas.Xu
2abb396467
feat: use result instead of either (#4724)
* feat: use result instead of either

* chore: remove dartz
2024-02-24 21:54:10 +08:00
Dev-for-fun
fa3bc97698
fix: remove duplicated button labels for done, cancel and ok (#4718) 2024-02-23 23:01:01 +08:00
Richard Shiue
c0796e8ae5
feat: mobile sort editor (#4714) 2024-02-23 20:47:19 +08:00
Richard Shiue
acd75befbc
fix: disable onTap when quick action button is disabled (#4713) 2024-02-23 16:56:31 +08:00
Richard Shiue
746f0817bc
fix: show database view options for inline as disabled (#4711) 2024-02-23 10:49:34 +08:00
Lucas.Xu
ef83688907
fix: the keyboard blocked the content of bottom sheet (#4706)
* fix: the keyboard blocked the content of bottom sheet

* chore: apply suggestion

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>

---------

Co-authored-by: Mathias Mogensen <42929161+Xazin@users.noreply.github.com>
2024-02-22 22:54:56 +08:00
Richard Shiue
4a0c48f419
feat: bottom sheets with transition (#4608)
* feat: shiny new bottom sheets

* chore: code review
2024-02-22 09:54:54 +08:00
Lucas.Xu
7802c75d7c
feat: support scaling text on mobile (#4690) 2024-02-22 09:50:24 +08:00
Richard Shiue
6f173c2ada
chore: adjust show mobile bottom sheet (#4689) 2024-02-21 21:06:46 +08:00
Lucas.Xu
252699d249
chore: upgrade to flutter 3.19.0 (#4677)
* chore: upgrade to flutter 3.19.0

* chore: adjust to the latest flutter convention

* chore: update CI flutter version

* fix: flutter analyze

* fix: flutter analyze

* fix: flutter analyze

* chore: fix docker build
2024-02-19 13:49:55 +08:00
Mathias Mogensen
9d71464f1a
fix: select name by default (#4630) 2024-02-07 21:49:17 +01:00
Mathias Mogensen
92ceb2cd7d
fix: dispose of resources in time (#4625)
* fix: limit length when renaming views

* chore: clean up database listeners

* fix: dispose of controllers properly

* fix: dispose of resources properly

* fix: deleting filters with same name

* chore: extend DatabaseTabBarItemBuilder

* fix: null check on null value
2024-02-07 18:38:53 +01:00
Yijing Huang
d117cd6b5b
chore: delete placeholder code and clean code (#4503) 2024-02-04 00:56:50 +08:00
Richard Shiue
ca93cb20ec
chore: revamp mobile database toolbar (#4579)
* chore: revamp mobile database toolbar

* chore: code cleanup
2024-02-04 00:55:44 +08:00
Richard Shiue
8c1d0106dd
chore: inkwell mobile quick action sheets (#4576)
* chore: inkwell mobile quick action sheets

* chore: more subtle tap effect

* chore: improve code style
2024-02-04 00:55:05 +08:00
Richard Shiue
4f0379bdd7
fix: size of hitbox in app bar button (#4575) 2024-02-01 20:53:21 +08:00
Richard Shiue
20391bfec4
chore: revamp database setting action sheets (#4570)
* chore: revamp database setting action sheets

* chore: field picker improvement

* chore: fix comments
2024-02-01 15:41:02 +08:00
Richard Shiue
9d28360887
fix: mobile ui improv and bugs (#4567)
* fix: quick edit field bottom sheet header

* fix: field editor appbar regression

This stems from moving to a standardized FlowyAppBar
2024-02-01 10:27:03 +08:00
Mathias Mogensen
247405ff51
fix: launch review reminder (#4514)
* fix: dismiss menu on enter on no result

* fix: add drag handle to mobile reminder dialog

* fix: show reminder icon  in date cell in grid

* fix: auto select day when selecting reminder

* fix: increase height of notification hub

* fix: let some reminder options require time and show time

* fix: handling of non-time reminder options

* test: fix edit date time cell test

* fix: close popover when pressing child again

* fix: add time of now when setting include time

* fix: clean logic

* fix: tests

* fix: add test and include time in notification hub

---------

Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
2024-01-31 21:17:36 +08:00
Richard Shiue
fa66a119ed
fix: mobile UI issues (#4561)
* fix: don't re-request focus after editing a cell

* fix: card detail more actions

* fix: select option indicators

* fix: add field bottom sheet revamp

* fix: edit field type bottom sheet

* chore: bump spacing between header and first row of field types

* fix: grid spacing

* refactor: use svg and background colors

* refactor: use shared component
2024-01-31 21:15:38 +08:00
Lucas.Xu
a143a030a9
feat: reafactor add block menu (#4563) 2024-01-31 17:47:02 +08:00
Lucas.Xu
d410ffbaa8
feat: support exporting log files (#4559)
* feat: support exporting log files

* feat: support uploading log files on Android
2024-01-31 10:07:50 +08:00
Lucas.Xu
f6242f1cc7
feat: add signout dialog (#4557) 2024-01-31 00:40:52 +08:00
Lucas.Xu
e9d7d0b7b3
fix: incorrect background color using in view action menu (#4513) 2024-01-30 16:07:51 +08:00
Nathan.fooo
c0aef8f4fe
fix: login issue (#4546)
* fix: reset server url when using appflowy cloud the first time

* refactor: set authenticator in frontend

* chore: log version

* chore: show hint when changing the server type

* chore: bump version

* chore: fix test

* chore: bump collab
2024-01-30 09:33:34 +08:00
Lucas.Xu
5b3b0e54d9
feat: refactor app bar (#4539)
* feat: refactor appbar

* fix: flutter analyze
2024-01-29 23:13:06 +08:00
Lucas.Xu
f1e380c276
fix: add more padding in bottom sheet widget (#4542) 2024-01-29 23:12:56 +08:00
Lucas.Xu
8937856d36
feat: new UI design for number format list (#4537) 2024-01-29 16:34:19 +08:00
Richard Shiue
63c22feb8f
fix: mobile field editing related bugs (#4534)
* fix: mobile field editing related bugs

* chore: review

* chore: restore podfile.lock
2024-01-29 13:19:35 +08:00
Richard Shiue
05a06980b9
chore: add unwaited futures to analysis options (#4485) 2024-01-29 10:26:45 +08:00
Lucas.Xu
7be29c04a2
fix: unable to delete image and refactor image actions menu (#4525)
* feat: refacotr image block action

* fix: unable to delete the image placeholder

* fix: unable to delete the image placeholder
2024-01-29 10:15:48 +08:00
Lucas.Xu
5a9a1e60e6
fix: bottom sheet issues (#4523)
* fix: bottom sheet padding

* fix: set divider width to 0.5px

* feat: optimize number select menu

* chore: update edit field icons

* chore: use short form in add block menu

* feat: optimize select and multi-select menu

* feat: refactor font settings page, theme mode menu and rtl menu
2024-01-28 22:50:25 +08:00
Richard Shiue
4811e65efa
chore: reorganize cell code (#4516)
* chore: move cell bloc files to application

* chore: move cell editor widgets to its own folder
2024-01-27 10:57:09 +08:00
Lucas.Xu
72a23bfe82
feat: update recentViews list to only keep the first 20 items (#4512) 2024-01-26 22:35:33 +08:00
Lucas.Xu
ed78cb4efc
fix: the items in database field menu are not aligned (#4511)
* fix: title in settings page overflow

* fix: the icon and text in database field menu aren't aligned

* fix: the icon and text in database field menu aren't aligned
2024-01-26 22:35:16 +08:00
Richard Shiue
d2cc799861
fix: mobile row detail title not being updated (#4507) 2024-01-26 22:23:59 +08:00
Richard Shiue
2e7a97c8a2
chore: enable timestamp field on mobile (#4506) 2024-01-26 22:23:47 +08:00
Lucas.Xu
0e3ffa8fd5
feat: action sheet revamp (#4497) 2024-01-26 00:33:45 +08:00
Lucas.Xu
be00980fdd
chore: optimize android UI (#4498) 2024-01-26 00:24:33 +08:00
Mathias Mogensen
acc03b8cc4
chore: code cleanup according to unintroduced lints (#4488)
* chore: remove redundant arguments

* chore: remove unused constructor params

* chore: reorganize constructors

* chore: remove unnecessary awaits in returns

* chore: remove unnecessary paranthesis

* chore: add lints

* chore: clean up after merge

* chore: add sort constructors first

* chore: organize constructors in blocs

* chore: use sizedbox.shrink over empty container
2024-01-25 23:37:36 +08:00
Richard Shiue
747abba87f
fix(mobile): remove elevation from edit field page and remove inksplash in card detail if disabled (#4491) 2024-01-25 13:20:48 +08:00
Richard Shiue
3f896ad64f
chore: reorganize code (#4490)
* rename select_option.rs to select_option_entities.rs

* move checklist_filter.rs from select_type_option to checklist_type_option
2024-01-25 12:56:43 +08:00
Richard Shiue
6591d5de52
chore: dart code cleanup (#4484)
* chore: use when instead of map in bloc event dispatch

* chore: dart code formatting, remove white space

* chore: remove unneeded hashmap for cell context

* fix: rebuild card content
2024-01-25 12:26:18 +08:00
Richard Shiue
a1abcd7626
refactor: database cell controller and builder (#4398)
* refactor: get row/field data from row cache and field controller in cell controller

* refactor: reorganize cell controller tasks and builder

* refactor: rename cell_builder.dart

* refactor: database editable cell builder

* refactor: database card cell builder

* fix: make it work

* fix: start cell listener and adjust cell style on desktop

* fix: build card cell

* fix: remove unnecessary await in tests

* fix: cell cache validation

* fix: row detail banner bugs

* fix: row detail field doesn't update

* fix: calendar event card

* test: fix integration tests

* fix: adjust cell builders to fix cell controller getting disposed

* chore: code review

* fix: bugs on mobile

* test: add grid header integration tests

* test: suppress warnings, reduce flaky test and group tests
2024-01-24 23:59:45 +08:00
Mathias Mogensen
baa7c8d826
feat: reminder on date (#4288)
* feat: support reminder on date

* feat: support reminder on date in database

* fix: include time static

* fix: do not force unwrap

* chore: clean flutter code

* test: add test for reminder in database

* fix: interpret reminder option

* feat: date and reminder on mobile

* feat: improve notification actions and support open row

* feat: support dates in document

* fix: minor changes + review

* feat: support reminder on mobile in document

* feat: support open row on database reminder mobile

* test: add more tests

* fix: first part of review

* fix: open row responsibility

* fix: abstract application logic from presentation layer

* fix: update reminder on date cell update

* test: fix failing test

* fix: show correct selected day after end date toggled
2024-01-24 15:15:57 +01:00
Mathias Mogensen
8105da1c2b
Fix: mobile improvements (#4480)
* fix: copy on notifications screen is caught off

* fix: mobile event screen no events copy

* fix: hide notifications toggle from settings

* fix: cannot change type of field in grid
2024-01-24 12:07:02 +01:00
Lucas.Xu
827e41348b
feat: keep the offset of the recent section (#4466) 2024-01-23 16:54:04 +08:00
Lucas.Xu
e239ba46aa
feat: customize self host url on launch page (#4465) 2024-01-23 16:38:15 +08:00
Lucas.Xu
38902ed599
feat: enable anonymous sign in on mobile (#4442)
* feat: enable anoymous login on mobile

* feat: support signin with third party serices
2024-01-22 22:36:16 +08:00
Zack
0a0f2adf76
feat: support uploading image to cloud storage (#4413)
* feat: add object ext

* feat: integrate upload image api

* feat: support uploading local file to cloud

* feat: abstact the CachedNetworkImage as FlowyNetworkImage

* ci: fix tauri ci

* fix: integration test

---------

Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
Co-authored-by: nathan <nathan@appflowy.io>
2024-01-20 23:16:18 +08:00
Lucas.Xu
36b88c602c
feat: update privacy policy and add version code (#4343) 2024-01-10 18:42:33 +08:00
Lucas.Xu
dcb070909c
feat: support RTL layout on mobile (#4335)
* feat: revamp theme mode settings

* feat: support RTL layout on mobile
2024-01-09 10:12:54 +08:00
Richard Shiue
1eeb812a1c
refactor: rename database code path from database_view to database (#4310) 2024-01-05 17:30:54 +08:00
Nathan.fooo
5facb61e23
refactor: crates (#4258)
* chore: rename flowy-folder2 to flowy-folder

* chore: rename flowy-document2 to flowy-document

* chore: fix test

* chore: move lib-infra crate

* chore: remove shared-lib

* chore: fix clippy
2023-12-31 07:29:40 +08:00
Yijing Huang
ca50e56474
chore: update fontFamily in button theme (#4251) 2023-12-30 15:48:20 +08:00
Richard Shiue
c821b8c4fe
fix: field editor bugs (#4241) 2023-12-29 11:35:53 +08:00
Lucas.Xu
f5bfcdcb98
fix: unable to see the text of link menu in dark mode (#4239) 2023-12-29 11:18:00 +08:00
Yijing Huang
43a3a1e4b2
chore: remove showFlowyMobileBottomSheet and replaced by showMobileBottomSheet (#4234) 2023-12-29 09:47:03 +08:00
Yijing Huang
5cede74c89
fix: remove keyboard when tap outside text field (#4235) 2023-12-29 09:46:10 +08:00
Lucas.Xu
0b3c904984
feat: add block menu (#4222)
* feat: add block menu

* fix: android add block issue
2023-12-28 12:37:10 +08:00
Richard Shiue
ce58737ec5
fix: bottom sheet updates apply immediately (#4220)
* fix: mobile field editor

* fix: immediately update select option

* fix: insert left and right field flow

* fix: create row behavior
2023-12-27 23:52:54 +08:00
Richard Shiue
1cde5a0df6
fix: mobile launch review (#4214)
* fix: text for changing field type

* fix: field name text field autofocus

* fix: don't allow insert left on primary field

* fix: edit field from view setting

* fix: edit non-current database view

* fix: row detail toggle hidden fields button

* fix: database view name autofocus

* fix: mobile date picker

* fix: deleting select option not deleting column

* fix: duplicate and delete view

* fix: mobile tab bar header left  padding
2023-12-27 11:56:06 +08:00
Lucas.Xu
121ed5a06e
fix: tooltips and overlay related issues (#4206)
* fix: align button tooltip

* chore: upgrade Flutter to latest beta version

* chore: bump version 0.4.0

* chore: minor ui update

* chore: update dependencies

* chore: upgrade flutter api

* chore: use beta channel

* chore: disable search bar and optimize toolbar ui

* chore: rename extra info keys

* feat: highlight text again after changing color

* chore: update iOS icon

* fix: lose children issues when converting block type

* chore: update editor version

* chore: update iOS icon and android navigation bar color

* fix: docker build issue

* fix: android keyboard issues

* chore: update icon
2023-12-27 11:11:14 +08:00
Lucas.Xu
c3b183504f
feat: mobile toolbar revamp (#4194)
* feat: toolbar ui revamp

* feat: implement bius and blocks

* feat: implement converting heading block

* feat: implement bius logic

* feat: implement numbered/bulleted/quote list logic

* feat: indent/outdent logic

* feat: implement link logic

* feat: toolbar ui improvement

* feat: implement toolbar biu logic

* feat: focus on biu if the selection is not collapsed

* feat: implement changing font logic'

* feat: implement color picker logic

* feat: support customzing text and background color

* fix: draghandler padding
2023-12-23 14:31:49 +08:00
Richard Shiue
8045042e78
chore: adjust mobile grid cell design (#4190) 2023-12-21 20:41:58 +08:00
Richard Shiue
13260e1db8
feat: mobile view editor improvements (#4186)
* feat: database view editor improvements

* feat: implement calendar settings

* fix: wrong view being opened
2023-12-21 11:51:42 +08:00
Richard Shiue
d68c847d59
refactor: database field type option (#4136)
* refactor: include field type option in FieldPB

* refactor: adapt changes on flutter

* refactor: adapt changes on new tauri grid

* refactor: adapt changes on old tauri grid/board

* chore: merge
2023-12-20 11:11:38 +08:00
Lucas.Xu
9a1ea138fc
feat: sync the icon & title (#4150)
* feat: sync the icon & title

* feat: diff the view data when refreshing

* fix: unable to update folder

* test: refactor bloc tests
2023-12-20 10:08:35 +08:00
Richard Shiue
eef34caf27
feat: revamp mobile database tab bar (#4160) 2023-12-18 17:04:20 +08:00
Richard Shiue
781fbf1b30
refactor: some code organization and date picker ui improv (#4148)
* chore: use appflowy_editor's platform extensions

* chore: organize code

* chore: improve mobile date picker
2023-12-15 18:20:44 +08:00
Richard Shiue
d862455342
feat: add borders on mobile grid (#4146)
* feat: mobile grid ui improvements

* chore: restore Podfile.lock
2023-12-14 23:15:26 +08:00
Lucas.Xu
d26606d3d3
fix: unable to sync the folder data (#4141) 2023-12-14 20:33:00 +08:00
Richard Shiue
b7b8713cd9
chore: code cleanup (#4129) 2023-12-11 20:49:21 +08:00
Richard Shiue
4e6643eca8
refactor: order object position and field service (#4118)
* refactor: create OrderObjectPositionPB

* refactor: use ObjectOrderPosition for creating rows

* refactor: field backend service

* refactor: use field_id for reordering fields

* style: reorder dependencies

* fix: changes on tauri

* feat: insert row above

* chore: don't pass group_id while duplicating a row
2023-12-11 11:19:20 +08:00
Yijing Huang
8cf6ab32f0
fix: mobile UI (#4121)
* fix: use default splash color

* chore: improve card border UI
2023-12-10 21:25:11 +08:00
Mathias Mogensen
649545cdf3
feat: mobile notifications screen (#4100)
* fix: update username on mobile header on change

* feat: notifications page

* feat: refactor and refinement

* fix: code review
2023-12-08 21:04:09 +08:00