Commit Graph

5816 Commits

Author SHA1 Message Date
Ivan Iskandar
65e1e2cf4f Refactor onboarding steps
(cherry picked from commit 2ca3ab077192a7e5e2e7a5fb00c303a5a633372e)
2023-12-16 10:59:14 -05:00
arkon
e36a2c68f1 Avoid crashing in SourcePreferencesFragment if source can't be loaded
Should probably wait for sources to definitely be loaded first, but that's
sort of a bigger change and needs to be lifecycle-aware.
2023-12-16 10:16:05 -05:00
arkon
ad3d915fc5 Skip updating unchanged chapters and tracks when restoring backup 2023-12-15 23:11:14 -05:00
arkon
36f400d542 Fix download indexing with changed storage locations
Fixes #10218
2023-12-15 18:44:37 -05:00
arkon
dd1a19745a Remove redundant job setup calls in migrations
We always set them up earlier in the migrations anyway.
2023-12-15 18:43:48 -05:00
arkon
58daedc89e Clean up manga restoring logic
Some behavior changes:
- It prioritizes new entries, then anything more recently updated
- It copies the more recently updated entry's metadata (description, thumbnail, etc.)
2023-12-14 23:26:02 -05:00
arkon
d20a8fcf13 Proper check for when to navigate to tracker settings from tracking action 2023-12-14 19:52:49 -05:00
KaiserBh
3532074a70
Merge branch 'master' into sync-part-final 2023-12-15 07:01:37 +11:00
arkon
e56bf82c31 Clean up some text alpha modifiers 2023-12-13 22:21:55 -05:00
arkon
0f9895eec8 Clean up category restoring logic 2023-12-11 22:48:42 -05:00
arkon
f776c36e70 Add ability to open available extension websites in WebView
Closes #8628
2023-12-11 22:24:33 -05:00
arkon
1ef01b53f2 Avoid starting restore job if already running
We already check in the settings screen where it's triggered, but who knows.
Also addressing some errors for method calls that require SDK 26+ (but don't
fail the build, somehow?).
2023-12-11 22:02:22 -05:00
arkon
720169dce3 Remove action to delete saved image in notification
Can just open it and delete from whatever gallery app the user has which has way
more functionality.

Closes #8327
2023-12-10 18:37:45 -05:00
arkon
0d09039e5f Fix settings screen crashing when saving state 2023-12-10 17:29:02 -05:00
arkon
cc56fde9fe Onboarding screen tweaks
- Opposite transition when going back a step
- Don't allow skipping (I don't want to deal with an unset storage location in other places)
2023-12-10 17:28:34 -05:00
arkon
3a0b3de175 Always show trackers action in MangaScreen
Goes to tracker settings to log in if none are set up.
2023-12-10 11:58:20 -05:00
arkon
47e544b710 Fix next local chapter not being indicated as downloaded in transition 2023-12-10 10:51:50 -05:00
arkon
f7c5b42435 More onboarding screen additions 2: Electric Boogaloo 2023-12-09 18:20:58 -05:00
arkon
e3404cd3d3 More onboarding screen additions 2023-12-09 17:49:35 -05:00
arkon
8b57169e92
Add basic onboarding screen (#10199) 2023-12-09 16:50:02 -05:00
arkon
ab9a26f6bd Migrate to some newer date/time APIs 2023-12-08 23:11:53 -05:00
Ivan Iskandar
8779b263ab
Downloader: Don't queue chapters on GlobalScope (#10217)
This fixes auto-download on library update not working on certain cases.
2023-12-07 22:17:01 -05:00
KaiserBh
4b9ccb9b75
chore: merge upstream changes.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-05 23:53:20 +11:00
arkon
734cb0be6e Show average scores in tracker search results
Closes #8280
2023-12-03 16:52:07 -05:00
arkon
1f259f9298 Fix sharing saved pages from notification
Related to #8327
Deleting doesn't seem to do anything still, but at least doesn't throw an exception.

Also removed behavior of dismissing notification after sharing/deleting pages/backups
in case you want to do something again afterwards. Users can manually dismiss the
notification whenever they want.
2023-12-03 16:31:10 -05:00
arkon
427fbfdf5e Minor cleanup 2023-12-03 15:56:51 -05:00
arkon
0c860c0fe9 Try to fall back to showing URI for storage location if concrete file path isn't available
Closes #9977
2023-12-03 15:56:45 -05:00
arkon
5b2a099203 Migrate ReaderColorFilterView to Compose 2023-12-03 15:34:52 -05:00
arkon
ccadfc8fe5 Force recreate download index cache on upgrade
Fixes #10187
2023-12-03 14:58:08 -05:00
arkon
3aead3a2a9 Clean up startDownloadNow function a bit
Fixes #9330, I think. If it was even still an issue.
2023-12-03 14:26:44 -05:00
arkon
6a48fed170 Remove storage permission check when manually creating backups
Co-authored-by: jmir1 <jmir1@users.noreply.github.com>
2023-12-03 14:25:09 -05:00
arkon
e5263d0345 Handle content URIs for covers
Co-authored-by: jmir1 <jmir1@users.noreply.github.com>
2023-12-02 14:44:41 -05:00
Ivan Iskandar
24e1b4034e
Move workers to foreground service context a bit more safely (#10202)
The system will crash the app if the worker that calls setForeground() finished
before the service runner be able to call Service.startForeground(). This edge
case is not handled by WorkManager and there is no way to check if the required
calls are done.

So here we suspend the worker by an arbitrary duration assuming the transition
to foreground service is done by then.
2023-12-02 11:46:59 -05:00
arkon
87be54aa4a Revert overridePendingTransition refactorings 2023-12-02 11:24:13 -05:00
arkon
82d9ae31bd Set foreground service types for library update jobs 2023-12-02 11:20:48 -05:00
Ivan Iskandar
e5a22eafe7
Define storage permission in manifest (#10200)
Mainly for migration process and to avoid breakage on users who doesn't
change their granular storage prefs.
2023-12-02 10:35:03 -05:00
arkon
7a52afd223 Bump dependencies 2023-12-01 22:29:51 -05:00
arkon
296201d6b7 Replace ReaderOrientation icon resources 2023-11-30 22:23:30 -05:00
arkon
162b639705 Remove unused resources 2023-11-30 22:19:38 -05:00
arkon
5dda32bb81 Bump dependencies 2023-11-29 16:55:36 -05:00
Ivan Iskandar
8ce8b60092
Migrate downloader service to WorkManager (#10190) 2023-11-29 16:34:07 -05:00
KaiserBh
73130bc3dd
chore: merge upstream changes.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-30 04:36:45 +11:00
Ivan Iskandar
8ff2c01bf2
HomeScreen: Add static key for TabNavigator (#10191)
Fixes incorrect tab selection after process death
2023-11-29 10:43:21 -05:00
arkon
e22eebfd02 Target SDK 30
Need to convert some services into WorkManager jobs before going to 31 and higher.
2023-11-28 23:02:33 -05:00
arkon
4fcdde4913 Remove storage permissions
Requires adjusting some file reading to first copy to a temporary file
in cache that we have permissions to read from. This is only applicable for things
like ZIP files where we need an actual File rather than just some Android content
URI shenanigans.
2023-11-28 22:50:30 -05:00
arkon
e41668862f Ignore casing when looking for some files/folders 2023-11-28 08:59:34 -05:00
arkon
a74a689c90 Update UniFile
Which has more correct nullability for some methods and case insensitivity for listFiles where possible.
2023-11-27 22:21:40 -05:00
arkon
d85a76484c Revert "Show copied to clipboard toast on Samsung devices even if Android 13+"
This reverts commit bf524595e2.

Apparently it shows a toast, but I don't see it?
2023-11-27 09:06:43 -05:00
arkon
9ce0bc6b5f Adjust stats overview icons
Closes #9865
Still sort of weird, but the icons are now always aligned.
2023-11-26 18:45:16 -05:00
arkon
bf524595e2 Show copied to clipboard toast on Samsung devices even if Android 13+
Since OneUI didn't implement the AOSP thing.
2023-11-26 16:36:42 -05:00
arkon
27c4db752c Actually use configured storage location for local source
Fixes #10178
2023-11-26 16:24:37 -05:00
arkon
ca54984344 Use UniFile for local source file handling 2023-11-26 16:04:37 -05:00
arkon
46aeab9a7a Add extensions for handling UniFile name/file extensions 2023-11-26 16:04:37 -05:00
arkon
f365b53a0f Move automatic backups from /backup/automatic to /autobackup
Removes the need to try to create child folders, which simplifies things.
2023-11-26 16:04:25 -05:00
Saud-97
d4dfa9a2c2
Anilist decode item description HTML (#10181) 2023-11-26 10:16:06 -05:00
arkon
cf9e60fd92 Use unified storage location for local source 2023-11-25 17:06:15 -05:00
arkon
21ae04d25d Minor download location cleanup 2023-11-25 16:51:32 -05:00
AntsyLich
ba10093ddc
Library update notification changes (#10175)
Don't round up notification percentage. Why show 100% when stuff is still updating.

Show same notification when hide notification content is enabled. Just exclude manga titles.
2023-11-25 13:32:54 -05:00
arkon
a5c9469698 Avoid crashing if storage directory can't be read
e.g. when first launching and there's no storage permissions yet.
2023-11-25 12:40:09 -05:00
KaiserBh
adf1f87364
fix: Timeout issue for people running reverse proxy.
It seem like the 10 second timeout for POST gives timeout for nginx users that uses reverse proxy and this should fix it.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-22 23:15:23 +11:00
KaiserBh
2a69a1eeb0
Merge branch 'master' of https://github.com/tachiyomiorg/tachiyomi into sync-part-final 2023-11-22 23:14:24 +11:00
arkon
bcc42dd259 Exclude some more app state preferences from backups 2023-11-21 22:11:44 -05:00
Ivan Iskandar
d59cb9c1e3
Migrate to M3 pull-to-refresh (#10164) 2023-11-21 22:09:41 -05:00
AntsyLich
3006604922
MangaScreen: Fix close in action mode exists from screen (#10160)
* MangaScreen: Fix close in action mode exists from screen

* L
2023-11-21 22:08:41 -05:00
KaiserBh
b3ee510050
refactor: add group category for sync.
Adding group gives more clarity.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 18:08:13 +11:00
KaiserBh
d180d1de45
fix: upstream conflict.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 17:57:04 +11:00
arkon
1fbf8ca079 Use unified storage location for automatic backups 2023-11-19 16:08:24 -05:00
arkon
695813ef7d Add unified storage location setting
Currently only using it as a replacement for the downloads location.
2023-11-19 16:04:28 -05:00
KaiserBh
3839d58289
chore: lint
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 07:50:56 +11:00
KaiserBh
389d40ab41
Merge branch 'master' of https://github.com/tachiyomiorg/tachiyomi into sync-part-final 2023-11-20 07:49:10 +11:00
KaiserBh
976841605e
refactor: remove the redundant syncPrefs
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 07:45:39 +11:00
KaiserBh
90cceeb040
refactor: localized
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 07:31:54 +11:00
arkon
e3b70ca08d Remove max automatic backups setting
We just always create up to 4 now to simplify it, given the addition of syncing
is going to make this section pretty busy.
2023-11-19 15:18:15 -05:00
arkon
8857b7e0c1 Use custom threshold for what's consider a low RAM device 2023-11-19 15:10:26 -05:00
arkon
4a7c20f5a0 Add "Rotate wide pages to fit" for webtoon reader too
Closes #1977
2023-11-19 15:03:54 -05:00
KaiserBh
14bc550a24
refactor: write into cache instead of file.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 06:59:09 +11:00
KaiserBh
44946d1aec
refactor: remove not needed old broken sources
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 06:54:59 +11:00
arkon
29368fc953 Fix searchbar style
Also address some Compose lint warnings.
2023-11-19 14:49:40 -05:00
KaiserBh
235b03bcba
refactor: remove the random delay!
Chances of conflict is pretty low since it's saved in ms so can just remove it.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 06:18:57 +11:00
KaiserBh
d17aa201d5
refactor: use by remember and private the functions.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 06:02:51 +11:00
KaiserBh
389336b823
refactor: move it into it's own function and use data and storage label.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-20 05:53:22 +11:00
arkon
0696e4bce0 Slightly shrink continue reading button size 2023-11-19 11:59:40 -05:00
Ivan Iskandar
255ed50685
Migrate XML themes to Compose (#10152) 2023-11-19 11:25:39 -05:00
KaiserBh
1a185375b7
chore: lint
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-19 20:00:25 +11:00
KaiserBh
1c52a055f4
fix: upstream conflict.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-19 19:58:51 +11:00
KaiserBh
be363807e6
fix: upstream conflict.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-19 19:34:37 +11:00
arkon
0d1bced122 Replace remaining Android-specific strings
Also renaming the helper composables so it's a bit easier to find/replace everything
in forks.
2023-11-18 19:41:33 -05:00
arkon
46e734fc8e
Migrate to multiplatform string resources (#10147)
* Migrate to multiplatform string resources

* Move plurals translations into separate files

* Fix lint check on generated files
2023-11-18 13:54:56 -05:00
KaiserBh
383bfc5dde refactor: Make sure to remove trim '/'
The host url for syncyomi have to be http://[ip]:[port] or https://[url] if there is trailing whitespace or '/' It will error since the api will be called like this https://example//api/download which then return html instead of json since it tries to go to the page instead of hitting the api.
2023-11-19 04:10:16 +11:00
Ivan Iskandar
69aa13bc56
Remove animateItemPlacement modifier usage (#10146) 2023-11-18 08:39:08 -05:00
KaiserBh
25285e7b66
Merge branch 'master' into sync-part-final 2023-11-18 17:08:15 +11:00
arkon
2c032ff70d Address more Compose lint warnings 2023-11-17 09:46:13 -05:00
KaiserBh
6d54953580
Merge branch 'master' into sync-part-final 2023-11-18 00:10:28 +11:00
arkon
0af4703b78 Migrate to standard M3 TabIndicator 2023-11-16 09:16:24 -05:00
Ivan Iskandar
9ec0f73e87
Migrate deprecated progress indicator components (#10142) 2023-11-16 09:01:45 -05:00
Ivan Iskandar
f9fb034330
Migrate deprecated tooltip components (#10141) 2023-11-16 09:01:12 -05:00
arkon
6eb5a25ea1 Bump dependencies 2023-11-15 22:30:10 -05:00
KaiserBh
d73f535eef
chore: update import!
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 17:50:53 +11:00
KaiserBh
846a11ab81
chore: update import!
Use the new import for SyncData.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 17:49:11 +11:00
KaiserBh
dac08ba3da
refactor: Move SyncData to SyncService.kt
Since it only contains a single class doesn't need to be in it's own package.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 17:48:10 +11:00
KaiserBh
71872ead81
refactor: clean up.
- Removed SyncDevice, device name since it's not used anymore by syncyomi server.
- Removed SyncStatus, used internally in the server doesn't need the data to be sent from tachi app.
- This way we just keep the manga data/backup that we can send to many services more generic.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 17:44:15 +11:00
KaiserBh
19227d6c5b
refactor: remove getInstant and decodeSyncBackup
Not used anymore.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 17:41:10 +11:00
KaiserBh
7ef188e23a
refactor: remove empty file
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 16:20:41 +11:00
KaiserBh
38609e8907
chore: lint.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 16:09:33 +11:00
KaiserBh
0016f1e335
fix: merge conflict.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 14:09:17 +11:00
KaiserBh
a08a815022
Refactor: Replace Certain SyncPreferences with appStateKey
- Revised several fields to utilize `appStateKey` for enhanced state management.
- Modified notification behavior:
  - Removed frequent 'sync completed' notifications to reduce redundancy.
  - Notifications now trigger only on sync errors, streamlining user alerts.

- Users should refer to the 'last sync timestamp' to verify successful synchronizations.
- The timestamp updates only when syncs complete successfully, providing a reliable success indicator.

Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-14 14:04:05 +11:00
KaiserBh
dac701bb35 refactor: use relativeTimeSpanString
Instead of manually formatting, use the relativeTimeSpanString function.
2023-11-14 00:30:22 +11:00
arkon
336221a972 Use immutable collections in more places 2023-11-11 22:44:12 -05:00
arkon
3c3b09209c Use immutable collections in presentation-widget module 2023-11-11 18:31:27 -05:00
arkon
4a6571d310 Minor cleanup 2023-11-11 18:25:27 -05:00
arkon
cb67f1de52 Add Compose lint checks
Still need to address most of them though.
2023-11-11 18:13:44 -05:00
KaiserBh
67b93bb177
chore: lint.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-11-10 00:16:33 +11:00
KaiserBh
d0eaf5e3cb chore: merge upstream. 2023-11-09 23:37:56 +11:00
arkon
00b2853d3d Convert create backup dialog to a screen
Allows us more flexibility in adding more options/explanations in the future.
2023-11-05 17:22:08 -05:00
AntsyLich
d7442d771b
ScanlatorFilterDialog: Fix crash when no scanlator (#10111) 2023-11-05 15:20:54 -05:00
arkon
3a8aa3e8cd Group mode dialogs together in bottom reader bar 2023-11-05 11:52:05 -05:00
arkon
9e67abcc8a Add separate default/apply buttons to reading mode/orientation selection dialogs
Related to #3453
2023-11-05 11:36:03 -05:00
AntsyLich
d0bcd30909
Trim Chapter scanlator value (#10108) 2023-11-05 11:06:20 -05:00
AntsyLich
b97aa23548
Implement scanlator filter (#8803)
* Implement scanlator filter

* Visual improvement to scanlator filter dialog

* Review changes + Bug fixes

Backup not containing filtered chapters and similar issue fix

* Review Changes + Fix SQL query

* Lint mamma mia
2023-11-05 10:34:35 -05:00
arkon
e6ca54fd04 Replace custom preview annotation 2023-11-05 10:34:19 -05:00
arkon
4502902fb0 Clean up reading mode / orientation enum classes
Categorizing the reading modes so we can implement a better
selection UI.
2023-11-05 10:01:19 -05:00
Ivan Iskandar
5f34539525
MangaScreen: Adjust "missing chapter count" item list styling (#10105)
Text style to labelMedium and set secondary alpha to the whole row
2023-11-05 09:15:51 -05:00
arkon
953f5fb025 Lint fixes 2023-11-05 09:14:57 -05:00
arkon
4f3a0b3523 Postpone Android 8 requirement 2023-11-05 09:08:17 -05:00
arkon
1d144e6767 Restrict line length with ktlint 2023-11-04 23:28:41 -04:00
arkon
056dbaefda Minor cleanup 2023-11-04 23:21:24 -04:00
arkon
3a15c6b843 Show EOL message if update check no-ops due to unsupported Android version 2023-11-04 20:26:47 -04:00
arkon
db20d04c4b No-op app update checks for Android < 8
This effectively makes it the last release for the older Android versions.
2023-11-04 19:41:00 -04:00
arkon
c5e8c9f01f Revert "Require Android 8+"
This reverts commit 64c50c1283.

Forgot we need to manage app update checks manually...
2023-11-04 19:36:29 -04:00
arkon
64c50c1283 Require Android 8+
Given that the next stable version of Chrome (120) will require Android 8+, it's
inevitable that the WebView functionality will gradually break. As always, newer
OS versions are recommended for better support with evolving Internet technologies.

According to https://apilevels.com/, Android 8+ still covers 93.7% of Android users.
2023-11-04 19:21:46 -04:00
arkon
4146c4c31d Ensure page indicator texts are centered
Maybe fixes #9976
2023-11-04 17:50:33 -04:00
arkon
69223df27c Move tracker binding logic to interactor 2023-11-04 17:05:38 -04:00
arkon
4b225a4ff1 Revert "Always save pages/covers in subfolders"
This reverts commit 8568d5d6c3.

Closes #10052
2023-11-04 16:46:02 -04:00
arkon
8644d90bd4 Bump dependencies 2023-11-04 16:11:43 -04:00
Ota
f30ab56fd0
New alphabetical chapter sort (#10073)
* added alphabetical chapter sorting

* Deleted sort_by_alphabet and re-utilized action_sort_alpha

* Accidentally deleted wrong string. Now solved

* Accidentally deleted wrong string. Now solved

Deleted sort_by_source instead of sort_by_alphabet in strings.xml.
Now reverted.

* Alphabetical sorting now uses Collator

* Clean up repeated Collator instances

---------

Co-authored-by: arkon <eugcheung94@gmail.com>
2023-11-04 15:47:32 -04:00
Caleb Morris
5d91b77c93
Added library sort by mean Tracker score (#10005) 2023-11-04 15:31:59 -04:00
arkon
aca36f9625 Maybe fix foreign key error during some backup restores 2023-11-01 22:52:00 -04:00
AntsyLich
6d538db5f2
Show missing chapter count between two chapters in chapter list (#10096)
* Show missing chapter count between two chapters in chapter list

Closes #8460

* Fix crash

* Lint

* Review changes

* Lint
2023-11-01 22:18:19 -04:00
Eshlender
b3d7c92475
Text on tabs Overflow Ellipsis (#10095)
* Update TabbedDialog to TabbedScreen

* clean
2023-11-01 22:17:17 -04:00
Eshlender
d862d83511
Combining manga information into a function (#10093)
* Combining manga information into a function

* clean space

* indexes

* context

* clean

* textAlign for Tablet Mode
2023-11-01 09:01:38 -04:00
Howard Wu
8a1625ec79
buildDir deprecated, use layout.buildDirectory instead (#10097)
gradle/gradle#20210
gradle/gradle#24820
2023-10-31 22:14:31 -04:00
arkon
2ee895ee3c Use same icon as chapter list items to indicate downloaded chapter in reader transitions 2023-10-31 18:05:37 -04:00
arkon
cb8ea5eab0 Add basic storage usage info to "Data and storage" settings screen 2023-10-29 18:18:56 -04:00
arkon
ce7bf396eb Don't include "app state" preferences in backups 2023-10-29 12:24:02 -04:00
arkon
1aa5222c99 Record time when last automatic backup was created
Closes #3474
2023-10-29 12:03:46 -04:00
arkon
298c49f3ab Abstract out library last updated timespan text
So we can reuse it for showing last automatic backup time.
2023-10-29 11:54:50 -04:00
arkon
ce5e10be95 Clean up chapter restoring logic a bit 2023-10-29 11:43:06 -04:00
arkon
4868dd2d03 Try to ensure that reader page error message is removed if image is loaded
Maybe fixes #5687
2023-10-28 17:18:42 -04:00
arkon
443d56f69b Add option to flash white screen on page change in reader for e-ink displays
Closes #2123
2023-10-28 16:21:45 -04:00
Eshlender
7457a18aee
Add icons for author and artist in MangaInfoHeader (#10079)
* Mark author and artist

* overall style

* Clean up spacing

---------

Co-authored-by: arkon <eugcheung94@gmail.com>
2023-10-28 15:46:10 -04:00