Compare commits

...

230 Commits

Author SHA1 Message Date
Rongjian Zhang c30895ab1e style: dart fix apply 2022-10-30 14:52:36 +08:00
Rongjian Zhang 504ee9c863 refactor: use freezed 2022-10-30 14:41:12 +08:00
Rongjian Zhang 0f4192f0be fix: update collapse props 2022-10-27 14:41:57 +08:00
Shreyas Thirumalai 19a87870bb
feat: add toast to indicate submit (#243)
closes #223

Co-authored-by: Rongjian Zhang <pd4d10@gmail.com>
2022-10-19 16:23:20 +08:00
Shreyas Thirumalai 88ca58d62b
feat(github): single commit screen (#253)
closes #238

Co-authored-by: Rongjian Zhang <pd4d10@gmail.com>
2022-10-17 18:02:40 +08:00
Rongjian Zhang ade30dec99 chore: update generated files 2022-10-17 16:32:54 +08:00
Rongjian Zhang 51bd138951 chore: add dep upgrade script 2022-10-17 16:23:44 +08:00
Rongjian Zhang 4595f61961 build: update deps 2022-10-17 16:17:18 +08:00
Rongjian Zhang 7d70886d52 style: dart fix apply 2022-10-16 16:50:58 +08:00
Rongjian Zhang 1edc61edef chore: github trending package 2022-10-16 16:31:08 +08:00
Rongjian Zhang 65e43dc633 chore: add generated dart files 2022-10-10 22:49:21 +08:00
Rongjian Zhang 06a96a14be chore: style tweaks 2022-10-10 21:52:20 +08:00
Rongjian Zhang e2de7feec2 fix: text height behavior 2022-10-10 20:19:28 +08:00
Rongjian Zhang 56402d789c feat: gh repo tweaks 2022-10-09 21:31:23 +08:00
Rongjian Zhang 29242aa45d chore: style tweaks 2022-10-08 21:19:07 +08:00
Rongjian Zhang ad44495236 fix: tag color with dark theme 2022-10-08 17:40:38 +08:00
Rongjian Zhang 3d21b6c226 refactor: app bar title 2022-10-08 01:06:03 +08:00
Rongjian Zhang fbb524a7de chore: remove unused files 2022-10-08 01:05:51 +08:00
Rongjian Zhang 7bd412eb2b refactor: remove reexports 2022-10-08 00:56:35 +08:00
Rongjian Zhang 7ca3fe03c5 refactor: use list extension 2022-10-08 00:46:49 +08:00
Rongjian Zhang b65ce98077 fix: swipe to remove account 2022-10-07 16:50:13 +08:00
Rongjian Zhang fddf67d518 chore: fix typo 2022-10-07 15:41:08 +08:00
Rongjian Zhang 5a5b20eb7e refactor: login screen styles 2022-10-07 15:24:56 +08:00
Rongjian Zhang efd74ccd86 refactor: replace material widgets 2022-10-06 16:21:56 +08:00
Rongjian Zhang 7b51747576 fix: pull page redirect 2022-10-06 15:18:01 +08:00
Rongjian Zhang 61d5a3e846 refactor: drop material color references 2022-10-06 15:13:59 +08:00
Rongjian Zhang 9892d87f9b Revert "fix: tag text color"
This reverts commit e872b4753d.
2022-10-06 15:08:04 +08:00
Rongjian Zhang 826664e3f1 refactor: language bar 2022-10-05 02:11:35 +08:00
Rongjian Zhang e6298b2363 refactor: button widgets 2022-10-05 01:51:53 +08:00
Rongjian Zhang 3953544d55 fix: new issue route priority 2022-10-05 01:40:03 +08:00
Rongjian Zhang f7eb0e6f62 feat(github): organization sponsors 2022-10-05 01:29:21 +08:00
Rongjian Zhang 830441ba05 feat(github): sponsors and sponsoring 2022-10-04 21:53:04 +08:00
Rongjian Zhang d86229e367 fix: contributions bar padding 2022-10-04 21:02:09 +08:00
Rongjian Zhang a1182ed6a5 feat(github): refine user screen organizations 2022-10-04 20:56:58 +08:00
Rongjian Zhang 633b58d36f fix: entry item style 2022-10-04 20:18:56 +08:00
Rongjian Zhang 4c2a7177eb feat(github): twitter username for orgs 2022-10-04 04:14:52 +08:00
Rongjian Zhang 057bad71fe refactor: check null 2022-10-04 04:09:36 +08:00
Rongjian Zhang 9b339c6cdf feat(github): twitter username at user screen 2022-10-04 04:07:15 +08:00
Rongjian Zhang 7a71d13f7d fix: github gql query 2022-10-04 03:58:45 +08:00
Rongjian Zhang 36e505d511 style: fix lint warnings 2022-10-04 01:05:29 +08:00
Rongjian Zhang 775b2cef49 chore: temporarily disable lint rules 2022-10-04 01:00:47 +08:00
Rongjian Zhang e872b4753d fix: tag text color 2022-10-03 20:27:59 +08:00
Rongjian Zhang df946c514a style: import sort format 2022-10-03 18:21:22 +08:00
Rongjian Zhang e45b8fa134 chore: add deprecated messages 2022-10-03 18:09:41 +08:00
Rongjian Zhang 2d28eb7b41 chore: style tweaks 2022-10-03 13:27:11 +08:00
Rongjian Zhang 55f3f6a713 fix: add monospace filter for code fonts 2022-10-02 18:50:22 +08:00
Rongjian Zhang 0a28311797 refactor: use ant sliver list 2022-10-02 16:57:34 +08:00
Rongjian Zhang b7dcf933a3 style: unused local variable 2022-10-02 13:13:28 +08:00
Rongjian Zhang 26b78a31a6 chore: style tweaks 2022-10-02 13:07:46 +08:00
Rongjian Zhang 0e952a6ef7 feat: dynamic fetch google fonts 2022-10-02 12:50:32 +08:00
Rongjian Zhang 9e2850558d feat: launch built-in maps 2022-10-02 12:50:32 +08:00
Rongjian Zhang 206cd1244c feat: launch built-in maps 2022-10-02 03:34:55 +08:00
Rongjian Zhang 4fe46b274a chore: update project query 2022-10-02 02:22:31 +08:00
Rongjian Zhang 048d35112b feat(gitlab): add gql client 2022-10-02 01:26:34 +08:00
Rongjian Zhang 3474d931ac ci: use vscode tasks and makefile 2022-10-02 00:59:01 +08:00
Rongjian Zhang 706d456c46 fix: split to packages to support gql gen 2022-10-02 00:32:05 +08:00
Rongjian Zhang efc2359f27 feat(gitlab): graphql schema and build config 2022-10-01 15:10:25 +08:00
Rongjian Zhang ba34337b07 chore: split schema update script 2022-10-01 13:30:34 +08:00
Rongjian Zhang 89966a95e6 fix: unused fragments server error 2022-10-01 04:50:53 +08:00
Rongjian Zhang 9df896a0db build: update deps 2022-10-01 04:20:05 +08:00
Rongjian Zhang 7b08f4cc07 refactor: split gql queries into files 2022-10-01 04:03:08 +08:00
Rongjian Zhang d5f3bd9f24 fix: hex color parse 2022-10-01 02:54:09 +08:00
Rongjian Zhang a30385a414 fix(gh): pull request router 2022-10-01 02:28:20 +08:00
Rongjian Zhang 8d1e3fa596 style: use super parameters 2022-09-26 10:59:30 +08:00
Rongjian Zhang d7972c4084 chore: settings style tweaks 2022-09-26 01:32:51 +08:00
Rongjian Zhang 6df89e771e feat(gh): organization follow 2022-09-26 01:26:58 +08:00
Rongjian Zhang 536b031655 feat: add sponsors 2022-09-25 23:12:41 +08:00
Rongjian Zhang 15a57899fd refactor: replace legacy palette 2022-09-25 02:46:37 +08:00
Rongjian Zhang fee559ba9a feat: apply dark theme 2022-09-25 02:23:55 +08:00
Rongjian Zhang 073af6f492 fix: theme usage 2022-09-24 18:35:19 +08:00
Rongjian Zhang d8f38d34aa style: fix apply 2022-09-24 13:51:11 +08:00
Rongjian Zhang 9b914ff1f1 refactor: github user screen query 2022-09-24 13:29:27 +08:00
Rongjian Zhang 20b7addf51 refactor: use list item 2022-09-24 02:22:17 +08:00
Rongjian Zhang 5214a404b1 refactor: replace table view 2022-09-24 01:49:27 +08:00
Rongjian Zhang cf6871ce20 refactor: push method as extension 2022-09-23 01:50:45 +08:00
Rongjian Zhang 988cdbfe45 refactor: list prop update 2022-09-22 23:37:06 +08:00
Rongjian Zhang e8eb860222 refactor: branch name widget 2022-09-22 16:56:02 +08:00
Rongjian Zhang 7e79da77ee style: lint fix apply 2022-09-22 16:28:21 +08:00
Rongjian Zhang 606370a85e fix: router path typo 2022-09-22 15:59:23 +08:00
Rongjian Zhang e5929aa1b8 refactor: use list 2022-09-21 02:04:07 +08:00
Rongjian Zhang f0b52e82ab feat(github): add meta screen 2022-09-20 21:26:38 +08:00
Rongjian Zhang 5b7b465b09 style: single quotes and package imports 2022-09-19 01:02:57 +08:00
Rongjian Zhang 8eda3e36c8 refactor: use popup show 2022-09-18 20:37:33 +08:00
Rongjian Zhang b2e7a97dab refactor: drop unused orgrepo query 2022-09-18 17:34:51 +08:00
Rongjian Zhang 137af2df75 refactor: use gql for orgs 2022-09-18 17:34:51 +08:00
Rongjian Zhang ec99de2b6d refactor: gql query names 2022-09-18 17:34:51 +08:00
Rongjian Zhang 66e14509de refactor: use gql data for org repos 2022-09-18 17:34:51 +08:00
Rongjian Zhang fac17a69ef refactor: mutation button 2022-09-18 13:02:06 +08:00
Rongjian Zhang d9c50cd0a9 fix: hex color prefix 2022-09-17 23:30:47 +08:00
Rongjian Zhang 4e715d9697 chore: contribution dark color 2022-09-17 23:15:01 +08:00
Rongjian Zhang d250f1c95c build: update icons 2022-09-17 22:35:45 +08:00
Rongjian Zhang a512e41121 refactor: use action sheet 2022-09-17 21:59:00 +08:00
Rongjian Zhang 9545b26310 refactor: drop scaffold theme 2022-09-17 20:46:45 +08:00
Rongjian Zhang 4af23c160d refactor: drop material widgets 2022-09-17 20:35:45 +08:00
Rongjian Zhang 084bc3c86a refactor: use ant list 2022-09-14 21:19:52 +08:00
Rongjian Zhang aac5fb866b refactor: table view 2022-09-14 11:52:35 +08:00
Rongjian Zhang 08f70164f4 refactor: css color parse 2022-09-12 22:59:17 +08:00
Rongjian Zhang cac6385e6e fix: path screen map 2022-09-12 11:54:41 +08:00
Rongjian Zhang 9207d52cf3 refactor: tag widgets 2022-09-12 11:46:42 +08:00
Rongjian Zhang 3261db8fee refactor: use go_router 2022-09-12 01:55:07 +08:00
Rongjian Zhang dc40206576 chore: update macos pod lock 2022-09-11 23:40:02 +08:00
Rongjian Zhang f14e274d24 chore: ignore graphql schema 2022-09-11 23:28:35 +08:00
Rongjian Zhang c5ea37f9bd refactor: replace deprecated methods 2022-09-07 15:40:53 +08:00
Rongjian Zhang 5635238921 style: dart fix apply 2022-09-07 15:37:15 +08:00
Rongjian Zhang 081acbeda8 style: dart fix apply 2022-09-07 15:28:12 +08:00
Rongjian Zhang b688dc155a build: upgrade ferry 2022-09-07 15:11:50 +08:00
Rongjian Zhang e8f3d956c3 fix: android bundle id 2022-09-05 20:36:17 +08:00
Rongjian Zhang 854a1c9506 build: update deps 2022-09-05 20:34:12 +08:00
Rongjian Zhang f52fee752d build: replace deprecated share 2022-06-26 15:18:22 +08:00
Rongjian Zhang ff7eadc5c9 build: replace deprecated package_info 2022-06-26 15:08:39 +08:00
Rongjian Zhang fc7dd512e8 build: update deps 2022-06-26 14:46:21 +08:00
Rongjian Zhang 8114cff317 build: update url_launcher 2022-06-26 14:23:50 +08:00
Rongjian Zhang bad5327928 build: update gql schema 2022-06-26 14:20:03 +08:00
Rongjian Zhang 126fadac76 chore: flutter create 2022-06-26 01:20:24 +08:00
Rongjian Zhang 594c5de972 refactor: fetch policy network only 2021-07-22 21:57:37 +08:00
Rongjian Zhang 7247c05817 chore: update github graphql schema 2021-07-22 18:52:58 +08:00
Rongjian Zhang 112a97f0eb chore: update deps 2021-07-22 18:36:53 +08:00
Rongjian Zhang d48ac1e484 refactor: use google_fonts package 2021-07-20 14:42:06 +08:00
Shreyas Thirumalai d6a24c257a
fix: settings screen repetition (#252) 2021-06-19 02:06:09 +08:00
Shreyas Thirumalai 68253e071e
fix(github): request review event (#250)
closes #248
2021-06-18 11:35:03 +08:00
Shreyas Thirumalai ddfa9e469e
chore: add untranslated strings, fix: caps (#244) 2021-06-17 11:02:41 +08:00
Rongjian Zhang 64178db3db docs: fix contributors image 2021-06-14 23:54:14 +08:00
Rongjian Zhang 1f4f034c40 chore: generate changelog 2021-06-14 17:42:52 +08:00
Rongjian Zhang 105eed467b v1.13.0 2021-06-14 16:33:14 +08:00
Rongjian Zhang 36930eb8aa feat: check update after opening app 2021-06-14 16:00:27 +08:00
Rongjian Zhang b488b90f97 ci: update lint scripts 2021-06-14 15:03:10 +08:00
Rongjian Zhang 5b3bc45db5 refactor: fix null types 2021-06-14 15:02:59 +08:00
Rongjian Zhang 442d910dbd feat: crash report
closes #114
2021-06-14 14:35:10 +08:00
Rongjian Zhang 97bd998491 fix: types 2021-06-14 14:02:52 +08:00
Rongjian Zhang 242dd1200d fix: bitbucket and gitlab files length
closes #224
2021-06-14 13:45:39 +08:00
Rongjian Zhang 70e19e9b72 fix: avatar url error fallback 2021-06-14 02:20:59 +08:00
Rongjian Zhang b320a8e6dd refactor: simplify list data payload 2021-06-14 02:13:11 +08:00
Rongjian Zhang 17df5d634c chore: update github graphql schema 2021-06-14 01:43:14 +08:00
Rongjian Zhang 917a8018f3 refactor: list scaffold 2021-06-14 01:26:03 +08:00
Rongjian Zhang ac02fd705a refactor: use null operators 2021-06-14 00:59:06 +08:00
Rongjian Zhang 17b6fd5d78 fix: long list scaffold 2021-06-05 13:54:52 +08:00
Rongjian Zhang af52d55af9 style: dartfmt 2021-05-31 01:07:31 +08:00
Rongjian Zhang 14369c2002 v1.12.4 2021-05-31 00:42:13 +08:00
Rongjian Zhang 87dbe87095 fix: pagination null 2021-05-31 00:41:51 +08:00
Rongjian Zhang 9b3a6fce07 fix: set locale null 2021-05-31 00:08:38 +08:00
Rongjian Zhang e2f103a807 fix: empty accounts 2021-05-31 00:03:53 +08:00
Rongjian Zhang 841a5d13cf fix: nullable types 2021-05-30 23:55:57 +08:00
Rongjian Zhang 445925584b Revert "Revert "chore: Update Translation for Simplified Chinese (#233)""
This reverts commit ef014c3054.
2021-05-30 22:10:33 +08:00
峡州仙士 e2721f8877 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hant/
2021-05-30 22:09:05 +08:00
V db86c0aee2 Translated using Weblate (Hindi)
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/hi/
2021-05-30 22:09:05 +08:00
ssantos f2d32f89ff Translated using Weblate (Portuguese)
Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/pt/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
qwerty287 09058db773 Translated using Weblate (German)
Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: qwerty287 <ndev@web.de>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/de/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
SoftwareByRedline cc653f8052 Added translation using Weblate (Hungarian)
Co-authored-by: SoftwareByRedline <krajczar.david41@gmail.com>
2021-05-30 22:09:05 +08:00
Oliver Lew e6e46d30ab Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (87 of 87 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: Oliver Lew <oliver_lew@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hans/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
Heimen Stoffels 9c72645e8c Translated using Weblate (Dutch)
Currently translated at 100.0% (87 of 87 strings)

Added translation using Weblate (Dutch)

Co-authored-by: Heimen Stoffels <vistausss@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/nl/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
Tealk 031af33f37 Translated using Weblate (German)
Currently translated at 100.0% (87 of 87 strings)

Translated using Weblate (German)

Currently translated at 75.8% (66 of 87 strings)

Added translation using Weblate (German)

Co-authored-by: Tealk <tealk@anzah.email>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/de/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
Adolfo Jayme Barrientos 7209cd2b56 Translated using Weblate (Catalan)
Currently translated at 95.4% (83 of 87 strings)

Translated using Weblate (French)

Currently translated at 100.0% (87 of 87 strings)

Translated using Weblate (Catalan)

Currently translated at 94.2% (82 of 87 strings)

Translated using Weblate (Catalan)

Currently translated at 88.5% (77 of 87 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (87 of 87 strings)

Translated using Weblate (Catalan)

Currently translated at 82.7% (72 of 87 strings)

Added translation using Weblate (Catalan)

Translated using Weblate (Spanish)

Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/ca/
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/es/
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/fr/
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/pt/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
kak mi 65a604768e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: kak mi <wavelake@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hans/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
HelaBasa c4fc788630 Translated using Weblate (Sinhala)
Currently translated at 2.2% (2 of 87 strings)

Added translation using Weblate (Sinhala)

Co-authored-by: HelaBasa <R45XvezA@protonmail.ch>
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/si/
Translation: GitTouch/GitTouch
2021-05-30 22:09:05 +08:00
Rongjian Zhang ef014c3054 Revert "chore: Update Translation for Simplified Chinese (#233)"
This reverts commit a5277965f1.
2021-05-30 22:07:41 +08:00
Rongjian Zhang efe0126bdb build: migrate to NNBD
closes #136
2021-05-16 15:16:35 +08:00
Rongjian Zhang 420eca980a refactor: update deprecated api 2021-05-16 13:23:31 +08:00
Rongjian Zhang c257c74b59 refactor: fix http param type 2021-05-16 12:09:27 +08:00
Rongjian Zhang 6d6e5bf195 chore: update oauth api url 2021-05-16 11:45:23 +08:00
Rongjian Zhang fa932b53ea build: update libs for flutter v2 2021-05-16 00:04:29 +08:00
gyro永不抽风 a5277965f1
chore: Update Translation for Simplified Chinese (#233) 2021-05-16 00:04:09 +08:00
Rongjian Zhang 4242b494b2 v1.12.3 2021-02-27 21:14:59 +08:00
Rongjian Zhang 72f709f076 chore: upgrade deps 2021-02-27 20:47:22 +08:00
Rongjian Zhang 11fc186091 chore: prefer flutter markdown in android
ref: #132
2021-02-27 19:37:19 +08:00
Rongjian Zhang 7521c40ee8 fix(github): issue screen pagination
closes #198
2021-02-27 17:47:44 +08:00
Rongjian Zhang f64c02b10b refactor: use weblate languages data 2021-02-27 17:41:57 +08:00
Rongjian Zhang 36a161cc3b Translated using Weblate (Japanese)
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/ja/
2021-02-27 12:51:16 +08:00
Rongjian Zhang a90d7ddb43 Added translation using Weblate (Japanese) 2021-02-27 12:51:16 +08:00
Rongjian Zhang de9830af43 Translated using Weblate (French)
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/fr/
2021-02-27 12:51:16 +08:00
Rongjian Zhang 2a4e9a9dca Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hant/
2021-02-27 12:51:16 +08:00
Rongjian Zhang 702567e43a Translated using Weblate (Portuguese)
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/pt/
2021-02-27 12:51:16 +08:00
Rongjian Zhang 4dd1ddf8f9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hans/
2021-02-27 12:51:16 +08:00
Rongjian Zhang e413677523 Added translation using Weblate (French) 2021-02-27 12:51:16 +08:00
Rongjian Zhang 5d799b31ac Added translation using Weblate (Chinese (Traditional)) 2021-02-27 12:51:16 +08:00
Sultan Iskandar Maulana acf088d860 Translated using Weblate (Indonesian)
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/id/
2021-02-27 12:51:16 +08:00
Sultan Iskandar Maulana f7eea5ba70 Added translation using Weblate (Indonesian) 2021-02-27 12:51:16 +08:00
Rongjian Zhang 2d19710f27 refactor: use soft link for better i18n fallback 2021-02-27 12:45:42 +08:00
Rongjian Zhang 74e731af5e fix: locale resolve 2021-02-27 12:25:35 +08:00
Rongjian Zhang 66b8177e72 v1.12.2 2021-02-19 20:59:07 +08:00
Artem 3e7498fef6 Translated using Weblate (Russian)
Currently translated at 82.7% (72 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/ru/
2021-02-19 20:57:29 +08:00
Ricardo 139bea7e9e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (87 of 87 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/pt_BR/
2021-02-19 20:57:29 +08:00
Artem 834ccc7e64 Added translation using Weblate (Russian) 2021-02-19 20:57:29 +08:00
Rongjian Zhang 37ecc55485 v1.12.1 2021-02-19 20:55:08 +08:00
Rongjian Zhang c80ca3e860 fix: locale fallback
closes #199
2021-02-19 20:54:33 +08:00
Karim Tayie 4a7028f525
fix(bitbucket): pull requests url (#197) 2021-02-16 13:29:34 +08:00
Rongjian Zhang c4a44decf7
docs: add f-droid badge 2021-02-15 10:28:10 +08:00
Rongjian Zhang 7c5077581f v1.12.0 2021-02-14 23:46:55 +08:00
Rongjian Zhang d505857a4b chore: update avatar placeholder images 2021-02-14 23:00:50 +08:00
Rongjian Zhang 020852f0ab refactor: replace icons 2021-02-14 22:20:59 +08:00
Rongjian Zhang 07d39100d7 fix(github): commits screen ref
closes #196
2021-02-14 21:34:54 +08:00
Rongjian Zhang d488d4b826 fix: set locale and reload 2021-02-14 21:23:15 +08:00
Rongjian Zhang 3f6955dd7f refactor: use user set locale first 2021-02-14 13:13:27 +08:00
Rongjian Zhang 6fe2a6541c refactor: add prefix to distinguish int value 2021-02-14 12:09:18 +08:00
Shreyas Thirumalai 717b7cd336
feat: choose locale in settings (#189) 2021-02-14 12:05:41 +08:00
Shreyas Thirumalai 3b88ad01f7
feat: skip login screen when logged in (#191) 2021-02-05 11:41:55 +08:00
Rongjian Zhang a1021465a8 refactor: locale 2021-02-03 13:49:00 +08:00
Rongjian Zhang 952bd20fb3 Translated using Weblate (Chinese (Simplified))
Currently translated at 75.0% (66 of 88 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/zh_Hans/
2021-02-03 12:58:15 +08:00
Shreyas Thirumalai 060704599f
refactor: synthetic packages for i18n (#186) 2021-02-03 12:04:41 +08:00
Jo 0ca5635714 Translated using Weblate (Spanish)
Currently translated at 82.9% (73 of 88 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/es/
2021-02-03 10:19:33 +08:00
Ricardo ed0bf1bf08 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (88 of 88 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/pt_BR/
2021-02-03 10:19:33 +08:00
Allan Nordhøy 368bcc3fc7 Translated using Weblate (English)
Currently translated at 100.0% (88 of 88 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/en/
2021-02-03 10:19:33 +08:00
Jo 2c7236f2f9 Added translation using Weblate (Spanish) 2021-02-03 10:19:33 +08:00
Ricardo 0466974c6d Added translation using Weblate (Portuguese (Brazil)) 2021-02-03 10:19:33 +08:00
Allan Nordhøy b086998e30 Translated using Weblate (Norwegian Bokmål)
Currently translated at 89.7% (79 of 88 strings)

Translation: GitTouch/GitTouch
Translate-URL: https://hosted.weblate.org/projects/git-touch/git-touch/nb_NO/
2021-02-03 10:19:33 +08:00
Allan Nordhøy a3d2d1efaf Added translation using Weblate (Norwegian Bokmål) 2021-02-03 10:19:33 +08:00
Rongjian Zhang b6f79478e2 Added translation using Weblate (Chinese (Simplified)) 2021-02-03 10:19:33 +08:00
Rongjian Zhang f3dfd74578 Added translation using Weblate (Chinese (Traditional)) 2021-02-03 10:19:33 +08:00
Shreyas Thirumalai 4f3d47200e
fix: files screen error (#184) 2021-02-02 22:43:15 +08:00
Shreyas Thirumalai af3c1655e4
fix(github): release screen error (#183) 2021-02-02 22:00:14 +08:00
Rongjian Zhang 918d0f3971 chore: using ionicons 2021-02-01 23:30:19 +08:00
Rongjian Zhang f4e5df4068 fix: html view disposed before set state 2021-02-01 22:31:32 +08:00
Rongjian Zhang 1b19f1a660 chore(github): update avatar placeholder images 2021-02-01 01:47:32 +08:00
Shreyas Thirumalai fba6e4cb72
feat(github): releases, gists(graphql) (#179)
closes #174
2021-01-31 22:08:37 +08:00
Rongjian Zhang b9852e1e05 chore: ignore generated files on lint 2021-01-31 19:36:02 +08:00
Rongjian Zhang dd6fe2b961 fix(github): comment emoji reaction 2021-01-31 19:27:45 +08:00
Rongjian Zhang 10477a7071 fix(github): repo and user mutations 2021-01-31 16:25:23 +08:00
Rongjian Zhang 31c43eebc8 feat(github): add public repos only login option
closes #133
2021-01-30 16:18:33 +08:00
Rongjian Zhang c1b3d330e0 feat: dark mode avatar placeholder 2021-01-30 15:55:08 +08:00
Rongjian Zhang 30eb0ef5b3 refactor: fix dart lint 2021-01-30 15:42:02 +08:00
Rongjian Zhang fc96c5ad45 chore: update avatar placeholder 2021-01-30 15:34:41 +08:00
Rongjian Zhang 09edf5f04b fix(github): comment of deleted user
closes #161
2021-01-30 14:22:23 +08:00
Shreyas Thirumalai b0193a5def
fix: hide contribution graph scrollbar (#177)
closes #37
2021-01-30 14:12:02 +08:00
Shreyas Thirumalai c2cd992019
chore: fastlane screenshots (#178)
closes #163
2021-01-29 22:00:04 +08:00
Rongjian Zhang 7a2196170e fix: typo
closes #172
2021-01-28 20:53:25 +08:00
Lukas Batema 8ebb885831
chore: Create SECURITY.md (#160) 2021-01-27 10:40:30 +08:00
Rongjian Zhang e41d235cde refactor: ferry 2021-01-25 10:28:03 +08:00
Shreyas Thirumalai 4f1e0441d2
feat(gogs): setup (#170)
closes #117
2021-01-23 22:08:05 +08:00
Shreyas Thirumalai cb9bc89778
chore: codeberg login note (#166)
closes #164
2021-01-19 21:06:34 +08:00
Shreyas Thirumalai d826107621
feat(gitlab): branches, issueAdd, router path fix (#165) 2021-01-19 00:46:31 +08:00
Shreyas Thirumalai c75288ef97
feat(gitee): watch, star a repo (#157)
* feat(gitee): watch, star a repo

* fix: pass in props as Tuple

* feat: bitbucket branches

* fix: use class instead of map
2021-01-11 22:31:54 +08:00
441 changed files with 705915 additions and 122618 deletions

View File

@ -1,22 +0,0 @@
name: deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v1
with:
channel: dev
- run: |
flutter config --enable-web
flutter pub get
flutter build web
- uses: peaceiris/actions-gh-pages@v3
with:
personal_token: ${{ secrets.PERSONAL_TOKEN }}
publish_dir: ./build/web/
external_repository: git-touch/git-touch.github.io

View File

@ -1,14 +1,18 @@
name: lint
on:
push:
branches: [main]
branches:
- main
pull_request:
branches: [main]
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
container:
image: google/dart:latest
steps:
- uses: actions/checkout@v2
- run: dartfmt --dry-run --set-exit-if-changed lib/**/*.dart
- uses: subosito/flutter-action@v1
with:
channel: stable
- run: flutter analyze
- run: flutter format --dry-run --set-exit-if-changed lib/**/*.dart

8
.gitignore vendored
View File

@ -8,6 +8,7 @@
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
@ -39,3 +40,10 @@ app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
packages/*/pubspec.lock

View File

@ -1,10 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
# This file should be version controlled.
version:
revision: d408d302e22179d598f467e11da5dd968dbdc9ec
revision: 676cefaaff197f27424942307668886253e1ec35
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: android
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: ios
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: linux
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: macos
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: web
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
- platform: windows
create_revision: 676cefaaff197f27424942307668886253e1ec35
base_revision: 676cefaaff197f27424942307668886253e1ec35
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

36
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,36 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "all",
"dependsOn": ["root", "gql_github", "gql_gitlab", "github_trending"]
},
{
"label": "root",
"type": "dart",
"command": "dart",
"args": ["run", "build_runner", "watch"]
},
{
"label": "gql_github",
"type": "dart",
"command": "dart",
"cwd": "packages/gql_github",
"args": ["run", "build_runner", "watch"]
},
{
"label": "gql_gitlab",
"type": "dart",
"command": "dart",
"cwd": "packages/gql_gitlab",
"args": ["run", "build_runner", "watch"]
},
{
"label": "github_trending",
"type": "dart",
"command": "dart",
"cwd": "packages/github_trending",
"args": ["run", "build_runner", "watch"]
}
]
}

View File

@ -1,16 +1,721 @@
## 1.1.0
# [](https://github.com/git-touch/git-touch/compare/v1.13.0...v) (2021-06-14)
# [1.13.0](https://github.com/git-touch/git-touch/compare/v1.12.4...v1.13.0) (2021-06-14)
### Bug Fixes
* avatar url error fallback ([70e19e9](https://github.com/git-touch/git-touch/commit/70e19e9b7204100d5c72ec9dc14991d245c70b07))
* bitbucket and gitlab files length ([242dd12](https://github.com/git-touch/git-touch/commit/242dd1200de034b4bf2bfbf30ea94c1a3dcd6153)), closes [#224](https://github.com/git-touch/git-touch/issues/224)
* long list scaffold ([17b6fd5](https://github.com/git-touch/git-touch/commit/17b6fd5d783e6dbc80b00e57423c2876ac862306))
* types ([97bd998](https://github.com/git-touch/git-touch/commit/97bd99849104bebfc3633b3c5bd96de6db35d3a1))
### Features
* check update after opening app ([36930eb](https://github.com/git-touch/git-touch/commit/36930eb8aad7ab78566324fcd1347c4e0c48166f))
* crash report ([442d910](https://github.com/git-touch/git-touch/commit/442d910dbdcdc9d1dae519c6e44085874ddf2f76)), closes [#114](https://github.com/git-touch/git-touch/issues/114)
## [1.12.4](https://github.com/git-touch/git-touch/compare/v1.12.3...v1.12.4) (2021-05-30)
### Bug Fixes
* empty accounts ([e2f103a](https://github.com/git-touch/git-touch/commit/e2f103a807291fd0cec12dcca641c70e66f3fa18))
* nullable types ([841a5d1](https://github.com/git-touch/git-touch/commit/841a5d13cf76d7f5e0a62ad90471ab241fe06fef))
* pagination null ([87dbe87](https://github.com/git-touch/git-touch/commit/87dbe870954139196c318698e47a90d26eb92586))
* set locale null ([9b3a6fc](https://github.com/git-touch/git-touch/commit/9b3a6fce078690bc7474aed5b91c7d8dbe6d84b2))
## [1.12.3](https://github.com/git-touch/git-touch/compare/v1.12.2...v1.12.3) (2021-02-27)
### Bug Fixes
* **github:** issue screen pagination ([7521c40](https://github.com/git-touch/git-touch/commit/7521c40ee8b7e4805e6a5acdd354c7700839f150)), closes [#198](https://github.com/git-touch/git-touch/issues/198)
* locale resolve ([74e731a](https://github.com/git-touch/git-touch/commit/74e731af5ed5242c0852c12f859d0cd16a6c3c94))
## [1.12.2](https://github.com/git-touch/git-touch/compare/v1.12.1...v1.12.2) (2021-02-19)
## [1.12.1](https://github.com/git-touch/git-touch/compare/v1.12.0...v1.12.1) (2021-02-19)
### Bug Fixes
* locale fallback ([c80ca3e](https://github.com/git-touch/git-touch/commit/c80ca3e86034979ade2fb170be9a047def016395)), closes [#199](https://github.com/git-touch/git-touch/issues/199)
* **bitbucket:** pull requests url ([#197](https://github.com/git-touch/git-touch/issues/197)) ([4a7028f](https://github.com/git-touch/git-touch/commit/4a7028f5256fde36a951f09b6c88e2f420e77e79))
# [1.12.0](https://github.com/git-touch/git-touch/compare/v1.11.1...v1.12.0) (2021-02-14)
### Bug Fixes
* **github:** commits screen ref ([07d3910](https://github.com/git-touch/git-touch/commit/07d39100d71ebb32c28e74a2d70a031fc0178f6b)), closes [#196](https://github.com/git-touch/git-touch/issues/196)
* files screen error ([#184](https://github.com/git-touch/git-touch/issues/184)) ([4f3d472](https://github.com/git-touch/git-touch/commit/4f3d47200e81f8f77898004d44f8f8006b41d20d))
* html view disposed before set state ([f4e5df4](https://github.com/git-touch/git-touch/commit/f4e5df4068847c0033c6cfed4a94128e2cee8354))
* set locale and reload ([d488d4b](https://github.com/git-touch/git-touch/commit/d488d4b8269b2df5e9b54dace2da21262f368633))
* **github:** comment emoji reaction ([dd6fe2b](https://github.com/git-touch/git-touch/commit/dd6fe2b96148aa25afced4b28da555289b70867c))
* **github:** comment of deleted user ([09edf5f](https://github.com/git-touch/git-touch/commit/09edf5f04b31b36c202f2f6d76bf376f95c76d2a)), closes [#161](https://github.com/git-touch/git-touch/issues/161)
* **github:** release screen error ([#183](https://github.com/git-touch/git-touch/issues/183)) ([af3c165](https://github.com/git-touch/git-touch/commit/af3c1655e42d4d2057e1996fc57945a46bc49709))
* **github:** repo and user mutations ([10477a7](https://github.com/git-touch/git-touch/commit/10477a707115eb11ababb20a684b2b56b84c6e84))
* hide contribution graph scrollbar ([#177](https://github.com/git-touch/git-touch/issues/177)) ([b0193a5](https://github.com/git-touch/git-touch/commit/b0193a5deff73b6d9efc263b89431c02a95a2455)), closes [#37](https://github.com/git-touch/git-touch/issues/37)
* typo ([7a21961](https://github.com/git-touch/git-touch/commit/7a2196170eeacc2428d3ea8f7c2e0c01d98d3605)), closes [#172](https://github.com/git-touch/git-touch/issues/172)
### Features
* choose locale in settings ([#189](https://github.com/git-touch/git-touch/issues/189)) ([717b7cd](https://github.com/git-touch/git-touch/commit/717b7cd3369e8fddca0699b5732726cde37066d7))
* skip login screen when logged in ([#191](https://github.com/git-touch/git-touch/issues/191)) ([3b88ad0](https://github.com/git-touch/git-touch/commit/3b88ad01f7af1c7763084d3df2c6b9de27fe602e))
* **gitee:** watch, star a repo ([#157](https://github.com/git-touch/git-touch/issues/157)) ([c75288e](https://github.com/git-touch/git-touch/commit/c75288ef977ae84123afc6ed7a1efd2527cc859a))
* **github:** add public repos only login option ([31c43ee](https://github.com/git-touch/git-touch/commit/31c43eebc8e3b11a60da92926b94b4c052029e9a)), closes [#133](https://github.com/git-touch/git-touch/issues/133)
* **github:** releases, gists(graphql) ([#179](https://github.com/git-touch/git-touch/issues/179)) ([fba6e4c](https://github.com/git-touch/git-touch/commit/fba6e4cb724957357f3ab0410619e6a29d93acb9)), closes [#174](https://github.com/git-touch/git-touch/issues/174)
* dark mode avatar placeholder ([c1b3d33](https://github.com/git-touch/git-touch/commit/c1b3d330e009fc3001793d0f1e3aa35d8ba47eb8))
* **gitlab:** branches, issueAdd, router path fix ([#165](https://github.com/git-touch/git-touch/issues/165)) ([d826107](https://github.com/git-touch/git-touch/commit/d826107621286cf3e93e870233f070bb4ed9d797))
* **gogs:** setup ([#170](https://github.com/git-touch/git-touch/issues/170)) ([4f1e044](https://github.com/git-touch/git-touch/commit/4f1e0441d2e16042482cdc0235a81dd7981c604e)), closes [#117](https://github.com/git-touch/git-touch/issues/117)
## [1.11.1](https://github.com/git-touch/git-touch/compare/v1.11.0...v1.11.1) (2021-01-11)
### Bug Fixes
* drop app review dep to fit f-droid ([f1956db](https://github.com/git-touch/git-touch/commit/f1956dbdc31f89fc3b8fdd59404ffbcd3435ebd9))
# [1.11.0](https://github.com/git-touch/git-touch/compare/v1.10.1...v1.11.0) (2021-01-10)
### Bug Fixes
* new issue link ([09ed700](https://github.com/git-touch/git-touch/commit/09ed70024ce38bf72084797884534233567eaaec))
* **github:** proper spacing in branch creation/deletion events ([#149](https://github.com/git-touch/git-touch/issues/149)) ([efe882a](https://github.com/git-touch/git-touch/commit/efe882a0dfdc4b824fd3265464f5e92e9557ba96))
* fallback language ([#141](https://github.com/git-touch/git-touch/issues/141)) ([8aa6604](https://github.com/git-touch/git-touch/commit/8aa660437fa3ed098ecd1fb1462a80e87a36d1fc)), closes [#140](https://github.com/git-touch/git-touch/issues/140)
* gitee typo ([#145](https://github.com/git-touch/git-touch/issues/145)) ([4679ca1](https://github.com/git-touch/git-touch/commit/4679ca10ee1898a10798c10091445f09bfa26617))
* UserItem assertion failure ([#135](https://github.com/git-touch/git-touch/issues/135)) ([c6757c1](https://github.com/git-touch/git-touch/commit/c6757c154890b9120848d985229f80c7c842fbfd))
### Features
* **bitbucket:** update ([#147](https://github.com/git-touch/git-touch/issues/147)) ([76f9999](https://github.com/git-touch/git-touch/commit/76f999953496fa1828795fa22cf1e05148a9ea9b))
* **gitea:** issue, issueComment, labels, refactor(GeIssueComment) ([#155](https://github.com/git-touch/git-touch/issues/155)) ([d74b141](https://github.com/git-touch/git-touch/commit/d74b1412791cf94af2ad570eb645ee19f7b9db17))
* **gitee:** branches, labels, contributors, refactor(RouterScreen) ([#153](https://github.com/git-touch/git-touch/issues/153)) ([f723eef](https://github.com/git-touch/git-touch/commit/f723eef83af655f383f4da01c41735608777ffec))
* **gitee:** comment actions (issue/PR) ([#150](https://github.com/git-touch/git-touch/issues/150)) ([e9454c3](https://github.com/git-touch/git-touch/commit/e9454c3dce9137931856da2775347578b45212f3))
* **gitee:** issues, issue, pullRequests screens ([#144](https://github.com/git-touch/git-touch/issues/144)) ([1ac27f4](https://github.com/git-touch/git-touch/commit/1ac27f4853dfe8a8c9aa801bcffac57c7fce2c72))
* **gitee:** search screen ([#146](https://github.com/git-touch/git-touch/issues/146)) ([8415a67](https://github.com/git-touch/git-touch/commit/8415a677c0425a5130b6c409a69139c98103b231))
* **gitee:** updates ([#148](https://github.com/git-touch/git-touch/issues/148)) ([92bcdaa](https://github.com/git-touch/git-touch/commit/92bcdaa4b0924dfff3fb1b50886d510df93b9fbf))
* add generated runner for Linux ([#134](https://github.com/git-touch/git-touch/issues/134)) ([f152c9a](https://github.com/git-touch/git-touch/commit/f152c9afdc2d27d6f3559470370cde649e0c33cc))
* localization ([#137](https://github.com/git-touch/git-touch/issues/137)) ([0a1da29](https://github.com/git-touch/git-touch/commit/0a1da29c3eac6aa1785f7722f8da376281bb9865)), closes [#119](https://github.com/git-touch/git-touch/issues/119)
## [1.10.1](https://github.com/git-touch/git-touch/compare/v1.10.0...v1.10.1) (2020-12-13)
### Bug Fixes
* android markdown webview render ([fb3ed14](https://github.com/git-touch/git-touch/commit/fb3ed14b4f9ed2752f96e119bd59ee783bdb5f68)), closes [#123](https://github.com/git-touch/git-touch/issues/123)
* remove in-app review ([c6a8b42](https://github.com/git-touch/git-touch/commit/c6a8b42ef1c95f57d2e9439987f4546a6ea3f7c7)), closes [#129](https://github.com/git-touch/git-touch/issues/129)
* update android launch image ([378d406](https://github.com/git-touch/git-touch/commit/378d406d379487860649bcad0ff818246ac1b4c1)), closes [#128](https://github.com/git-touch/git-touch/issues/128)
# [1.10.0](https://github.com/git-touch/git-touch/compare/v1.9.0...v1.10.0) (2020-12-12)
### Bug Fixes
* launch image icon size ([15fe6db](https://github.com/git-touch/git-touch/commit/15fe6dbdb648b254e39cefbaa7f87c1787e38062))
* **github:** trending api encoding ([9dd02e0](https://github.com/git-touch/git-touch/commit/9dd02e081672b0acc6619bff0195ba013f52c6c4)), closes [#120](https://github.com/git-touch/git-touch/issues/120)
### Features
* macos integration ([e41445c](https://github.com/git-touch/git-touch/commit/e41445cc8c4d7a40e78f9a9886d6e6113a697cd9))
* request in-app review ([08511fb](https://github.com/git-touch/git-touch/commit/08511fb8fb854af0817eae9814e16f23c67183e1)), closes [#127](https://github.com/git-touch/git-touch/issues/127)
* tweak dark mode contribution color ([6036849](https://github.com/git-touch/git-touch/commit/6036849e9b7a3caec51405a6cf2ece96803d64c0))
* web deployment ([72d4d2d](https://github.com/git-touch/git-touch/commit/72d4d2d2b90edd56edfb910d95072bdc36f0dded))
# [1.9.0](https://github.com/git-touch/git-touch/compare/v1.8.0...v1.9.0) (2020-11-08)
### Bug Fixes
* **github:** actor link ([ee03b52](https://github.com/git-touch/git-touch/commit/ee03b52461591ad38711b2e2a31e501c4204abb4))
* markdown webview dark mode ([979e913](https://github.com/git-touch/git-touch/commit/979e91378b2488f5db82b7e4b1bb833fcb340892))
### Features
* **bitbucket:** clarify app password ([53897f6](https://github.com/git-touch/git-touch/commit/53897f6fb32633659b3a2d4b46b1b688e1af556f)), closes [#125](https://github.com/git-touch/git-touch/issues/125)
* add markdown render engine setting ([5795413](https://github.com/git-touch/git-touch/commit/5795413f25d40febfc9bbe3d699c61f7464fac50)), closes [#124](https://github.com/git-touch/git-touch/issues/124)
# [1.8.0](https://github.com/git-touch/git-touch/compare/v1.7.0...v1.8.0) (2020-11-01)
### Bug Fixes
* **github:** contribution heatmap ([895f479](https://github.com/git-touch/git-touch/commit/895f4792d648d433b0a75b58a71cac59064307fb)), closes [#122](https://github.com/git-touch/git-touch/issues/122)
* avoid hex color parse error ([5f45a54](https://github.com/git-touch/git-touch/commit/5f45a54f95e5386523f33f08a8f7d648e4120ada))
* handle navigation in webview ([d940f3b](https://github.com/git-touch/git-touch/commit/d940f3b3e9a7d6e9f25b23064841698244925f8a))
* **gitee:** platform type saved ([5534f96](https://github.com/git-touch/git-touch/commit/5534f96f8abbffd5cf0aba057ce00dea801f2345))
* hide avatar of commit item if not exist ([d37a5c1](https://github.com/git-touch/git-touch/commit/d37a5c1981bb5a3b117b79128f2bfa1b61db2224))
* **github:** head ref name ([1d1804f](https://github.com/git-touch/git-touch/commit/1d1804fa86f2e8eb572c478bd4abbd33cdffc41c)), closes [#116](https://github.com/git-touch/git-touch/issues/116)
* **gitlab:** user and group link ([02e8d66](https://github.com/git-touch/git-touch/commit/02e8d66ae2d9271b50ad54f682703f56bb582c26)), closes [#115](https://github.com/git-touch/git-touch/issues/115)
### Features
* **gitee:** add blob screen ([2bdfb3d](https://github.com/git-touch/git-touch/commit/2bdfb3dfe1295b2a40b8090f5902a7801144b042))
* **gitee:** add token login step ([f480dc0](https://github.com/git-touch/git-touch/commit/f480dc048e8a7a6d1ec057009e19b0cf0389ca9c))
* **gitee:** add tree screen ([6870aa6](https://github.com/git-touch/git-touch/commit/6870aa6ff1d3d42e9f8f3c482b4bad6c55b70fea))
* **gitee:** commits screen ([d9ca01b](https://github.com/git-touch/git-touch/commit/d9ca01b99d515eb7815ba17b610714e6f25f5b58))
* **gitee:** empty search screen ([db03560](https://github.com/git-touch/git-touch/commit/db035601de266637dd3641d2007dd24b46184887))
* **gitee:** repo screen ([66ab665](https://github.com/git-touch/git-touch/commit/66ab665f31d41ea9c48336668787b7e828efefee))
* **gitee:** repos screen ([2e1d869](https://github.com/git-touch/git-touch/commit/2e1d869aa18fd5e2adc890203c3c0519b94ed31a))
* **gitee:** user screen ([b5a1948](https://github.com/git-touch/git-touch/commit/b5a19486dd9f7d637cad11dce4516ec5d91b1838))
* **gitee:** users screen ([a5d64fd](https://github.com/git-touch/git-touch/commit/a5d64fdb866336f823caad1252af00bb0f7b58ab))
* replace io library for web adaptation ([a4f1daa](https://github.com/git-touch/git-touch/commit/a4f1daab31b3b0b7e39ade0f07003f77ba9d5667))
# [1.7.0](https://github.com/git-touch/git-touch/compare/v1.6.0...v1.7.0) (2020-10-08)
### Bug Fixes
* drop svg support to avoid readme screen frozen ([968019b](https://github.com/git-touch/git-touch/commit/968019b932188b1714ba6eae84198462b9ddcfbc)), closes [#112](https://github.com/git-touch/git-touch/issues/112)
* use container to fix expansion of tab ([0ab0564](https://github.com/git-touch/git-touch/commit/0ab05646f083aeac177a7ffca8c52d19d783549d))
* user item text overflow ([168dcd1](https://github.com/git-touch/git-touch/commit/168dcd1d2ea7605dddd8a6308935ac75d9773bc1))
* **github:** cross reference event ([0d722f0](https://github.com/git-touch/git-touch/commit/0d722f062e714de105d228a6ea2683b36d6e616b))
* **github:** issue/pr timeline assign event ([85d5cad](https://github.com/git-touch/git-touch/commit/85d5cadbeb8cfcc82ffd9a08053e9814f4c049e3)), closes [#113](https://github.com/git-touch/git-touch/issues/113)
### Features
* add button to quickly switch accounts ([#36](https://github.com/git-touch/git-touch/issues/36)) ([62b02ed](https://github.com/git-touch/git-touch/commit/62b02ed5040b1b6c7aafdbfd6fcd19ca79fd26d3))
* add name to user list item ([70b2dd4](https://github.com/git-touch/git-touch/commit/70b2dd4bb049416be9ddee6793464840b993dfae))
# [1.6.0](https://github.com/git-touch/git-touch/compare/v1.5.1...v1.6.0) (2020-10-06)
### Bug Fixes
* **github:** readme loading in repo screen ([ff0104e](https://github.com/git-touch/git-touch/commit/ff0104e9bbb58c30bf4aff1d6f7851382589d0be))
* **github:** update trending api ([36de5ec](https://github.com/git-touch/git-touch/commit/36de5ec8a207175ebbe112274d840efe2a2d9142)), closes [#110](https://github.com/git-touch/git-touch/issues/110)
* markdown code background color ([9af1900](https://github.com/git-touch/git-touch/commit/9af190000b414f35b96dc8a77f71cb9ad409ff3e)), closes [#108](https://github.com/git-touch/git-touch/issues/108)
* **gitea:** keep original query params as is ([aa62524](https://github.com/git-touch/git-touch/commit/aa62524c23d799b572bc54fd0778175b91baa4f9))
* **gitea:** pagination has more and cursor ([d47ea5a](https://github.com/git-touch/git-touch/commit/d47ea5a092cbc41eaa0920affae2dc5267f436df))
* **github:** empty repo (no ref) ([3002c07](https://github.com/git-touch/git-touch/commit/3002c0736772790d204b845e1540573764271346)), closes [#99](https://github.com/git-touch/git-touch/issues/99)
* **github:** timeline item avatar link ([4ae8f52](https://github.com/git-touch/git-touch/commit/4ae8f52991989c05bf56e8b464c4ef9fc20d74ab)), closes [#107](https://github.com/git-touch/git-touch/issues/107)
### Features
* add status for github and gitlab ([2b68d95](https://github.com/git-touch/git-touch/commit/2b68d95a4af67c62fd8d201b690508f57f972e58))
* avoid reloading widget on material bottom tab switch ([11d61e1](https://github.com/git-touch/git-touch/commit/11d61e163fafbf5d222a5dd4489cd5c2c2e999b9)), closes [#42](https://github.com/git-touch/git-touch/issues/42)
* **gitea:** add orgs in user screen ([99b2b79](https://github.com/git-touch/git-touch/commit/99b2b795d12c9373b7ca7784d8cb89dfee4537bd))
* **gitea:** add repo count in org screen ([f935153](https://github.com/git-touch/git-touch/commit/f9351533c7029ce38290acda2f8509e6870a8701))
* **gitea:** add repo count in user screen ([2a1b9fe](https://github.com/git-touch/git-touch/commit/2a1b9fe08dc13b139286d79b0082f68d491371ab))
* **gitea:** add status screen ([e3a4b2c](https://github.com/git-touch/git-touch/commit/e3a4b2c0917eb2e0d880ff681d36c7deaa0758ca))
## [1.5.1](https://github.com/git-touch/git-touch/compare/v1.5.0...v1.5.1) (2020-10-05)
### Bug Fixes
* **gt:** me screen login ([890c44c](https://github.com/git-touch/git-touch/commit/890c44c4c558649dcbade4a8c7322688a9a0d7ec))
# [1.5.0](https://github.com/git-touch/git-touch/compare/v1.4.0...v1.5.0) (2020-10-05)
### Bug Fixes
* entry item count ([7d3e916](https://github.com/git-touch/git-touch/commit/7d3e916af7abc78bcf9a30abc27c606c36a9ce74))
* **gh:** contributions data ([c950559](https://github.com/git-touch/git-touch/commit/c95055904392a9e3b89d4b6ce0bd7b457c1aa6dd))
* **gh:** orgs screen description null ([2d96101](https://github.com/git-touch/git-touch/commit/2d9610170b9875a54c047ae5350bab30b49b42eb))
* **gh:** text with at notation ([2248415](https://github.com/git-touch/git-touch/commit/2248415574d1499de32be116c1eed5a933f490af))
* align contribution graph center for ipad ([#41](https://github.com/git-touch/git-touch/issues/41)) ([b3f56ad](https://github.com/git-touch/git-touch/commit/b3f56adbe988093706be48f1a4207f72eebb559e))
* api change user to accountID ([#85](https://github.com/git-touch/git-touch/issues/85)) ([8a1180d](https://github.com/git-touch/git-touch/commit/8a1180dae8b915f8fcd3c3f02e5b74a0e5eeff65)), closes [#79](https://github.com/git-touch/git-touch/issues/79)
* back button android, return home on tap ([#59](https://github.com/git-touch/git-touch/issues/59)) ([98f102f](https://github.com/git-touch/git-touch/commit/98f102faec38f318d38a429471a016d99e540a1b))
* broken links ([8c4a9ee](https://github.com/git-touch/git-touch/commit/8c4a9ee3a12f90f92d991547989c7b030cde00c6))
* commit author color ([57f2ab7](https://github.com/git-touch/git-touch/commit/57f2ab7967efb0b6d491260737884ace264ad4cc))
* downgrade provider for compatibility ([74a175f](https://github.com/git-touch/git-touch/commit/74a175f384ef50f3b25732c6ca7636a483cf722b))
* lint problems ([1269b66](https://github.com/git-touch/git-touch/commit/1269b66eb41930db286f6c430c0518cd1cd45ba5))
* **gh:** subscribe permissions ([8076481](https://github.com/git-touch/git-touch/commit/80764817caae85f0143397645e91e4a62c1c2856)), closes [#47](https://github.com/git-touch/git-touch/issues/47)
* **gh:** trending user has no repo ([a3619ba](https://github.com/git-touch/git-touch/commit/a3619ba340cfcd356906eec58ad7929a4d56e4e4))
* commit comment event render error ([#93](https://github.com/git-touch/git-touch/issues/93)) ([db62424](https://github.com/git-touch/git-touch/commit/db624247ec0cd7d243ad4f24e3a4179b33754ecd))
* error using same token ([#83](https://github.com/git-touch/git-touch/issues/83)) ([e173713](https://github.com/git-touch/git-touch/commit/e17371386143824f2c108942d6fb09102f4616d9)), closes [#82](https://github.com/git-touch/git-touch/issues/82)
* event payload ref in create,delete events ([#71](https://github.com/git-touch/git-touch/issues/71)) ([561970a](https://github.com/git-touch/git-touch/commit/561970ab59b2cdb537461bbde010177996db6e2e))
* namespace conflicts ([2ef1c0b](https://github.com/git-touch/git-touch/commit/2ef1c0b9829865961f3bcb8d6268a800396ca890))
* transparent status bar ([#73](https://github.com/git-touch/git-touch/issues/73)) ([0063e99](https://github.com/git-touch/git-touch/commit/0063e99bbcfef81fbe0e0388289ceb40afeab40d))
* yellow underline ([#65](https://github.com/git-touch/git-touch/issues/65)) ([d6a321d](https://github.com/git-touch/git-touch/commit/d6a321d6ca1a1958e878b9b04c4f41bf91e209a9))
* **gh:** change branch on close ([ce4f7a1](https://github.com/git-touch/git-touch/commit/ce4f7a180995641c5eee0a0814d7f172ae175dfb))
* **gh:** org repos language color ([c2be166](https://github.com/git-touch/git-touch/commit/c2be166a055d2547ebf87bd71008ad6a1acdfe7e))
* **gh:** user description overflow ([a5c1d0f](https://github.com/git-touch/git-touch/commit/a5c1d0f5baee6d1c74ffafdb89a5772b340b89a1))
* **gl:** handle statistics null ([a198430](https://github.com/git-touch/git-touch/commit/a1984309a9e11b3a1d78bb39bb2de27049634aec))
* **gl:** project commits ([60904d7](https://github.com/git-touch/git-touch/commit/60904d763de5e728e70192ffcb72e01409d38edb))
* replace transition ([b134bd8](https://github.com/git-touch/git-touch/commit/b134bd87d27333073873584f4dfd4dfd9f8e991a))
* **gt:** organizations pagination ([8ee57fd](https://github.com/git-touch/git-touch/commit/8ee57fdc35613ac9c31f5ba710e01cbf28e236d3))
### Features
* **gh:** add events screen ([5101b25](https://github.com/git-touch/git-touch/commit/5101b2554f0f8a6d5e5a1bfd0a6ff099eef619d4))
* **gt:** add contribution heatmap ([d2bb3c4](https://github.com/git-touch/git-touch/commit/d2bb3c4a5ce3e0f1463e59d011a0bb5d295ad446)), closes [#104](https://github.com/git-touch/git-touch/issues/104)
* **gt:** followers and following ([3f324b4](https://github.com/git-touch/git-touch/commit/3f324b43fd160de9afae95139e50c7fdd18277be))
* **gt:** org members screen ([a87a504](https://github.com/git-touch/git-touch/commit/a87a504cea589d11e96863f7562cff2367e532b5))
* **gt:** org repos ([1da8076](https://github.com/git-touch/git-touch/commit/1da807632bbb08c097210a9123958647d3f045df))
* **gt:** stargazers, watchers and forks ([61ad3eb](https://github.com/git-touch/git-touch/commit/61ad3ebb164475ab89e5babc4adad14e3a052da7))
* **gt:** user repos and stars ([25633b4](https://github.com/git-touch/git-touch/commit/25633b44d98a28233b69298ef043ed849bdeeb01))
* add diff view ([aa52263](https://github.com/git-touch/git-touch/commit/aa52263fc04cd2536f8852036a794072b380a49c))
* add material app zoom transition ([#98](https://github.com/git-touch/git-touch/issues/98)) ([34e6af2](https://github.com/git-touch/git-touch/commit/34e6af2dab954534999050b99c4f4cf177d6584a)), closes [#94](https://github.com/git-touch/git-touch/issues/94)
* bitbucket issues, prs screens ([#91](https://github.com/git-touch/git-touch/issues/91)) ([7a97bc2](https://github.com/git-touch/git-touch/commit/7a97bc22abdef9afaf6d27bfb6fabf5408d0afec))
* contributor screen ([#64](https://github.com/git-touch/git-touch/issues/64)) ([be30bcb](https://github.com/git-touch/git-touch/commit/be30bcb7d8ea29ca96c30b5d24e2ce87d8caad2e)), closes [#53](https://github.com/git-touch/git-touch/issues/53)
* files screen ([#75](https://github.com/git-touch/git-touch/issues/75)) ([0749a69](https://github.com/git-touch/git-touch/commit/0749a699862bd7030bddf48d6c717b2691bbaa5f)), closes [#74](https://github.com/git-touch/git-touch/issues/74)
* gists screen ([#80](https://github.com/git-touch/git-touch/issues/80)) ([094ad4b](https://github.com/git-touch/git-touch/commit/094ad4b1bb25ad21c1bf9d1c2ddce2aade73aa0c)), closes [#66](https://github.com/git-touch/git-touch/issues/66)
* github compare screen ([#86](https://github.com/git-touch/git-touch/issues/86)) ([8f5dafd](https://github.com/git-touch/git-touch/commit/8f5dafd2d04c8de7a5ce1b813b73c67fb09913f1))
* gitlab search screen ([#81](https://github.com/git-touch/git-touch/issues/81)) ([bc3a204](https://github.com/git-touch/git-touch/commit/bc3a204c2bddbc1aaee35e3540c70595077d6f3c))
* handle svg images ([8a490ab](https://github.com/git-touch/git-touch/commit/8a490abb1050797329f455ec0bd1115d0ba88db8))
* use cupertino loading again ([8258232](https://github.com/git-touch/git-touch/commit/8258232d48c7981fa03209e4c45f764454d6fb41))
* user organizations, fix: create,delete event ([#72](https://github.com/git-touch/git-touch/issues/72)) ([bf5ed23](https://github.com/git-touch/git-touch/commit/bf5ed239716ae9fd29bcae24ecc3741771401f99)), closes [#58](https://github.com/git-touch/git-touch/issues/58)
* **gl:** add starrers screen ([f8f436a](https://github.com/git-touch/git-touch/commit/f8f436a38280815e6e3b47a41f45ce645f10f885)), closes [#48](https://github.com/git-touch/git-touch/issues/48)
* **gl:** commit screen ([4ea30d0](https://github.com/git-touch/git-touch/commit/4ea30d0132a2d54082aeb70f8ecf78c1354495fe))
# [1.4.0](https://github.com/git-touch/git-touch/compare/v1.3.0...v1.4.0) (2020-02-09)
### Bug Fixes
* hide accounts info in production ([1716714](https://github.com/git-touch/git-touch/commit/171671498165524687b52c0eb93c4ad7fc1502b9))
* **gh:** reaction active color ([97a524e](https://github.com/git-touch/git-touch/commit/97a524ecf9a956f173cf0fafd1e0018a24757eab))
* code view tab size ([cbb3310](https://github.com/git-touch/git-touch/commit/cbb33108906791950fb74bebab85cbd9182726dc)), closes [#24](https://github.com/git-touch/git-touch/issues/24)
* **bb:** commit url ([29902bb](https://github.com/git-touch/git-touch/commit/29902bb711680141423d2272f50ccf1fafd2a538))
* avatar size ([12bb22b](https://github.com/git-touch/git-touch/commit/12bb22bda9f27e90415545a6d8d28046d395eca0))
* **bb:** download url ([f9fa142](https://github.com/git-touch/git-touch/commit/f9fa142702162c17baee083effa876eb5519ed6e))
* **bb:** username get ([376b872](https://github.com/git-touch/git-touch/commit/376b8724a48be12a913a66f3f1561a863024704f))
* **bb:** utf8 decode text ([8f9ed54](https://github.com/git-touch/git-touch/commit/8f9ed5469d60806828d7e9daa0d60230cc6216e3))
* avatar url null ([76a2f4b](https://github.com/git-touch/git-touch/commit/76a2f4b960eb9adfce597ac864b9d4c645a473b9))
* **gitlab:** use default branch instead of master ([79fe174](https://github.com/git-touch/git-touch/commit/79fe174b1052dbeac5f4053bc6f4d44e9f5a2842)), closes [#28](https://github.com/git-touch/git-touch/issues/28)
### Features
* **bb:** commits screen ([f856a1b](https://github.com/git-touch/git-touch/commit/f856a1bfeee99b15a7d1e106d0583b39916ff92f))
* **bb:** explore screen ([6d35703](https://github.com/git-touch/git-touch/commit/6d3570355432ac535034ee9607d448cc5d40a8b8))
* **bb:** object screen ([a9f9b95](https://github.com/git-touch/git-touch/commit/a9f9b957936978e702e8ded8f5ad85197c5f577b))
* **bb:** repo screen ([7f2649c](https://github.com/git-touch/git-touch/commit/7f2649c691c662d11fbdbd16831f0d1c36890f34))
* **bb:** team screen ([dfb74ce](https://github.com/git-touch/git-touch/commit/dfb74ce43dc09266383c9fe5eddf975ad848f5e8))
* **bb:** teams screen ([3542c36](https://github.com/git-touch/git-touch/commit/3542c36dcce758e98dbc8bc8b667a2e8a0734e64))
* **bb:** user screen ([830bcea](https://github.com/git-touch/git-touch/commit/830bceaa367a0f64d89204d7e183b8fb54fc8553))
* **bitbucket:** app password login ([53ecb32](https://github.com/git-touch/git-touch/commit/53ecb3242ff3879cd3c5697194ede8a506a76abe))
* **gh:** add watch state and action ([940ea5c](https://github.com/git-touch/git-touch/commit/940ea5c1bfc62da1b1b81711d6561c68ea466099))
* **gh:** org repos screen ([a105eb6](https://github.com/git-touch/git-touch/commit/a105eb6e5736ccd5962cabd0e35da87b6d9d4991)), closes [#25](https://github.com/git-touch/git-touch/issues/25)
# [1.3.0](https://github.com/git-touch/git-touch/compare/v1.2.0...v1.3.0) (2020-02-01)
### Bug Fixes
* cupertino picker text color ([7c7dc32](https://github.com/git-touch/git-touch/commit/7c7dc32db6345a1d1260a24b3772479a13707d26)), closes [#22](https://github.com/git-touch/git-touch/issues/22)
* material dark mode text ([a4284d0](https://github.com/git-touch/git-touch/commit/a4284d00fb3977b87a77f1cea8d3fefa4b8e87ce))
* reload app on account switch ([084aec4](https://github.com/git-touch/git-touch/commit/084aec4453a9951f6478bfa7a9dca9d56d1140bf))
* repo header avatar link ([3cde09b](https://github.com/git-touch/git-touch/commit/3cde09bf237fdb25fa0f9cd06ea411583b816bc9))
* **github:** binary files ([89c311c](https://github.com/git-touch/git-touch/commit/89c311c410dab58cbd5442bb4b08e446f6871045)), closes [#21](https://github.com/git-touch/git-touch/issues/21)
* **github:** encode url ([16925f8](https://github.com/git-touch/git-touch/commit/16925f8e1a548ad1017e9b75619716f9dcb3fdbc))
* **github:** pull screen router ([c3cf25b](https://github.com/git-touch/git-touch/commit/c3cf25bcf35db750104c0de771dfd42f1d5a8994))
* **github:** throw on error ([fe8bf0a](https://github.com/git-touch/git-touch/commit/fe8bf0a800c0f7b62bc88b53f1313f923b3f139a))
* query params already decoded in fluro ([a425902](https://github.com/git-touch/git-touch/commit/a425902756a075468610df29f38a49524ae01374)), closes [#23](https://github.com/git-touch/git-touch/issues/23)
* **gitlab:** api pagination ([9aec397](https://github.com/git-touch/git-touch/commit/9aec397a602b895724eddad244f88f1b64f8d6b5))
* **gitlab:** binary blob view ([d17b6a0](https://github.com/git-touch/git-touch/commit/d17b6a02a16c92ca3a78da9b955bc2160be533ac))
* **gitlab:** error catch ([f3e5988](https://github.com/git-touch/git-touch/commit/f3e5988413771bf7dad310f340a9b88b981dbc33))
* **gitlab:** issue and user ([92a33e8](https://github.com/git-touch/git-touch/commit/92a33e8fb81455c9f3086402dd58768fe1351fab))
* **gitlab:** issue router ([e2e0f6b](https://github.com/git-touch/git-touch/commit/e2e0f6ba2527cd0348844774b5cd223d12954122))
* avatar link ([9121316](https://github.com/git-touch/git-touch/commit/9121316acd3ba9b43acafe87b851b46842e0e512))
* limit commit message to one line ([5f502ae](https://github.com/git-touch/git-touch/commit/5f502ae29e606128c49a0d12997a31a07dfeb475))
* refresh scaffold catch error ([f5ad1ac](https://github.com/git-touch/git-touch/commit/f5ad1acd25d8f9bc74f50dc1827abf4deae723f7))
* repo item link ([bc436d2](https://github.com/git-touch/git-touch/commit/bc436d2f9e41978f194d55c322c54cf2f9a3e807))
* **gitlab:** mr data ([1d90a39](https://github.com/git-touch/git-touch/commit/1d90a3959ce989877e597f97d8db4ada794287a7))
* **gitlab:** project router ([c1df100](https://github.com/git-touch/git-touch/commit/c1df10025378c07d60d1e44c8cbcb0d9e36abd2c))
* **gitlab:** syntax highlight in dark mode ([df09ee4](https://github.com/git-touch/git-touch/commit/df09ee4c177f36022330acb9845b02796c3db9b6))
* **gitlab:** tree and blob router ([00d6778](https://github.com/git-touch/git-touch/commit/00d67784af5186deb9998b2f64e3a19fabd25787))
### Features
* **gitea:** org screen ([f0e447f](https://github.com/git-touch/git-touch/commit/f0e447fd842f34e1cc316a5a089c14a16681a290))
* **gitea:** orgs screen ([336ff49](https://github.com/git-touch/git-touch/commit/336ff4960e7bf6a5b2796ecd7fa2592459db7755))
* remove account ([5aa7483](https://github.com/git-touch/git-touch/commit/5aa7483c906e67777d233554f17cd5e6e4544d97))
* **gitea:** blob screen ([9d6985c](https://github.com/git-touch/git-touch/commit/9d6985c3913237d826c6d5fb9ac41abbabbbc13c))
* **gitea:** commits screen ([7d1065e](https://github.com/git-touch/git-touch/commit/7d1065eaaeead8fb12bf4a025514a784d0f03e5c))
* **gitea:** issue and pr screen ([a7af4cd](https://github.com/git-touch/git-touch/commit/a7af4cdcd01aa1a3642e87cf84a6b7e5675c3e64))
* **gitea:** main screen ([76c6948](https://github.com/git-touch/git-touch/commit/76c6948b05dd7d361b59cc031da8bc3692b140cd))
* **gitea:** repo screen ([1aa7f0d](https://github.com/git-touch/git-touch/commit/1aa7f0d130ae0edee5ab3ce694ed776cf2c9c426))
* **gitea:** user screen ([7039a89](https://github.com/git-touch/git-touch/commit/7039a8905f1cde2eff5348b4c85c58863db5ae88))
* **gitlab:** commits screen ([5d453cc](https://github.com/git-touch/git-touch/commit/5d453ccbd5607c83da84ea8b78b7074ae54bdcef))
* **gitlab:** explore screen ([62c4c38](https://github.com/git-touch/git-touch/commit/62c4c380f882c62b125512561661657b2d865105))
* **gitlab:** group screen ([d7d05bc](https://github.com/git-touch/git-touch/commit/d7d05bc72ba374ecb0737341738969ac0f7a1bcd))
* **gitlab:** groups screen ([1c35b0b](https://github.com/git-touch/git-touch/commit/1c35b0b4cd29aa779599f0437915136d0064866c))
* **gitlab:** issues screen ([2c9951b](https://github.com/git-touch/git-touch/commit/2c9951be7bbf7d8c4653fa8d555bdbcd0b646908))
* **gitlab:** members screen ([d1d2e9e](https://github.com/git-touch/git-touch/commit/d1d2e9e0fbe60d6ba5894cc26fac141a3ec11562))
* **gitlab:** project and group members ([b56111d](https://github.com/git-touch/git-touch/commit/b56111db6ffa3983562379d169b16c42920535b8))
* object tree item size ([39c360f](https://github.com/git-touch/git-touch/commit/39c360f28118991a68ea629e41377fc6c19046de))
* **gitlab:** mrs screen ([4bf049a](https://github.com/git-touch/git-touch/commit/4bf049a2e4a71695932cb304acd5d3d22e612821))
* **gitlab:** project badges ([a021f75](https://github.com/git-touch/git-touch/commit/a021f755f343f4bae823a254c98f19bfa8c0435a))
* **gitlab:** repo size and commits ([248212c](https://github.com/git-touch/git-touch/commit/248212c95c702432b392a971173a020649a8a761))
* **gitlab:** settings entry ([65e45f6](https://github.com/git-touch/git-touch/commit/65e45f6b7f4fb097999764e2d7f352a8eae95316))
# [1.2.0](https://github.com/git-touch/git-touch/compare/v1.1.0...v1.2.0) (2020-01-28)
### Bug Fixes
* account switch ([7bc11e0](https://github.com/git-touch/git-touch/commit/7bc11e0c84dedc814ef5148ac079e54b4bf3803d))
* add typename for correctly resolving ([991d563](https://github.com/git-touch/git-touch/commit/991d563b2995165fc2324485576c1f14f32b826f))
* after cursor ([172faf5](https://github.com/git-touch/git-touch/commit/172faf53f495584ba6c5d9b9857de2186d24862f))
* analysis problems ([7c665e7](https://github.com/git-touch/git-touch/commit/7c665e7f1ab903c16b913011a8926368608c05de))
* avatar click ([cd38d96](https://github.com/git-touch/git-touch/commit/cd38d96a91d2a2c835adff1d253f90437bbc54fd))
* branch switch ([867f617](https://github.com/git-touch/git-touch/commit/867f617276ccdc0529544b155b892120b4bcb3b7))
* check if issue or pull request ([980bbf9](https://github.com/git-touch/git-touch/commit/980bbf9f30f50c76e8687886e2c582d495960928))
* code theme settings ([a9265c3](https://github.com/git-touch/git-touch/commit/a9265c3367ec6335834d57a636f0ed14c291557e))
* commit history count ([50cfd48](https://github.com/git-touch/git-touch/commit/50cfd48e5107223c67e7b3af9194fd8f4ae2100b))
* commit status ([bd9703e](https://github.com/git-touch/git-touch/commit/bd9703e44344746cb80e35ffe2bd68cbc80618b0))
* contribution background ([19faf20](https://github.com/git-touch/git-touch/commit/19faf20fb126d5a464cd83449943608962ebf37f))
* cupertino button padding ([b1181ff](https://github.com/git-touch/git-touch/commit/b1181ffc6ffe842be86c4b0e12942e72ae4a1e26))
* dark mode for notification screen ([743d359](https://github.com/git-touch/git-touch/commit/743d359665a6949d703332fb9dd51cde17ba7e11))
* do not wait tap callback ([4b0dae9](https://github.com/git-touch/git-touch/commit/4b0dae95911fe681f9339adc08c72ceb09b22a12))
* empty query error ([1ef1a51](https://github.com/git-touch/git-touch/commit/1ef1a5182e4e13369b8f64b66fa031ec2a2722b4))
* follow system brightness ([fccb79b](https://github.com/git-touch/git-touch/commit/fccb79b2cc1ab58328fcd475a0772eddb5fce2be))
* forks url ([4f65321](https://github.com/git-touch/git-touch/commit/4f65321ef550b66924584105d7b0ed8b3850dd3f))
* generic type ([103f05b](https://github.com/git-touch/git-touch/commit/103f05b01ce3eb0ac81af8fa2f8eb0760a976233))
* import path ([b91db22](https://github.com/git-touch/git-touch/commit/b91db22eb4c4692778f37e25d832487842283e92))
* issue add router ([857e49f](https://github.com/git-touch/git-touch/commit/857e49f220ad400efaadfbd9f7507afe17743598))
* link url null ([d2ae236](https://github.com/git-touch/git-touch/commit/d2ae2363568b2440d3077c6b76f4eaec07c0a585))
* login screen theme ([0b334f3](https://github.com/git-touch/git-touch/commit/0b334f341ef5935cfe0e2261bfa69fec97820fdd))
* markdown dark mode ([3be1a92](https://github.com/git-touch/git-touch/commit/3be1a92ea2cb959d89e755dcb80a92f43e91bcae))
* markdown style ([9cac22e](https://github.com/git-touch/git-touch/commit/9cac22e61639e81c6dc7ea31a0821dbfb826e879))
* material dark mode ([80ab94d](https://github.com/git-touch/git-touch/commit/80ab94df53d2b6cb1675a9114841983a815ec186))
* material style ([91d7a93](https://github.com/git-touch/git-touch/commit/91d7a93575a78d2796bea41f555739c377b47603))
* minor fixes ([da48561](https://github.com/git-touch/git-touch/commit/da48561b62516344ad96b2cf97b9038d1c3f8d57))
* organization extract ([0c315c3](https://github.com/git-touch/git-touch/commit/0c315c354c355ddcb0ab9ed178d41bbd9f37aaa5))
* organization members query ([3586ee5](https://github.com/git-touch/git-touch/commit/3586ee5230bab0ee36635d5a00055e2f818341e3))
* path url encode ([7b688ef](https://github.com/git-touch/git-touch/commit/7b688efcb2e77ed118c6932b39b0c512967dcd92))
* physical pixel border ([42f67c3](https://github.com/git-touch/git-touch/commit/42f67c3ed198e2d6338bcc9be448b148af4deb40))
* pin json_serializable version to fix build error ([21093a6](https://github.com/git-touch/git-touch/commit/21093a6ab978db4344ac3988367d4bbe02534d0c))
* pinnable item ([e989ad9](https://github.com/git-touch/git-touch/commit/e989ad9715e7fcb29b867263c261632166f18a79))
* pull request comment ([76cfa7a](https://github.com/git-touch/git-touch/commit/76cfa7a7726749c4bbf6985119af0abfb3a88e76))
* refresh only if branch changes ([9c0b0f6](https://github.com/git-touch/git-touch/commit/9c0b0f64c455101d5ce826a69e122a8429554990))
* remove duplicated users ([4bc2319](https://github.com/git-touch/git-touch/commit/4bc2319ec66a1823858fd7be86875b8b8bea5ea2))
* remove operation name ([6b095e8](https://github.com/git-touch/git-touch/commit/6b095e8a3bc34589a7eb7c2769bc1490fd41a9c4))
* reset gql client on change ([7b78e66](https://github.com/git-touch/git-touch/commit/7b78e660cb17fc2cd6158675448b6bb7cff89b6d))
* review event actor ([eadac28](https://github.com/git-touch/git-touch/commit/eadac28db7da997e9d609bccdd499d2092d54472))
* sort files ([1055517](https://github.com/git-touch/git-touch/commit/1055517650ff84c2df14c630e01681c77deaeaa4))
* table view icon style ([ffa3ef7](https://github.com/git-touch/git-touch/commit/ffa3ef79d9a2587108ca71dd5d92bfbcf84ea51b))
* text overflow ([765bc23](https://github.com/git-touch/git-touch/commit/765bc23b5b6dcdee606b2e46d97a5c3542cc6062))
* text overflow ([d40b877](https://github.com/git-touch/git-touch/commit/d40b87750432502421633f5c775f0aa58f190842))
* theme select ([20ca296](https://github.com/git-touch/git-touch/commit/20ca29657bea09b9a240c1e1f8833e54ef5d5164))
* totalcount ([0b743ff](https://github.com/git-touch/git-touch/commit/0b743ffddb1c5141cd3cad499b69ff86142ec0d4))
* trending data compatibale ([a9787d3](https://github.com/git-touch/git-touch/commit/a9787d38a3645b28a9b92e983e302714d4dc1377))
* trending user data ([396fe55](https://github.com/git-touch/git-touch/commit/396fe550c40375f9eb3d10f1ff58a11946670662))
* user name color ([46ecf2f](https://github.com/git-touch/git-touch/commit/46ecf2ff4aa997db56432bdbb87d235b77f94e5b))
* user screen tab null ([b32a0e7](https://github.com/git-touch/git-touch/commit/b32a0e77392dc95d1153fda5391d637398b6b11c))
* x build ([91d94a5](https://github.com/git-touch/git-touch/commit/91d94a5180a575fcb4c96e284ba0fb66b72bbd53))
* **gitlab:** encode path ([a8faf76](https://github.com/git-touch/git-touch/commit/a8faf7622768ce9d4e41d557a4a4a07e809fe75c))
* **gitlab:** full path ([c694b99](https://github.com/git-touch/git-touch/commit/c694b99bc7628308643dddefb804deb42ae9afc3))
* user screen login ([f2799ca](https://github.com/git-touch/git-touch/commit/f2799cacc4df9aef5b564cb5f92ee25b32cc77d1))
### Features
* about screen ([6441f24](https://github.com/git-touch/git-touch/commit/6441f24c1cee14cec373a54851d7c0e070c37dd7))
* add artemis ([716924d](https://github.com/git-touch/git-touch/commit/716924d27d9ff263074b1dc8eb9ad9e7b5a7406b))
* add gitlab todos and issue ([810e1eb](https://github.com/git-touch/git-touch/commit/810e1eb4def80bc5e6c10ff0de23691373966319))
* add graphql types for user screen ([b11d6be](https://github.com/git-touch/git-touch/commit/b11d6be74b56266f333493c6eca07e7979717f7b))
* add web assets ([bfc41cd](https://github.com/git-touch/git-touch/commit/bfc41cd79bec9f9bffecc358301c7b0072d6736a))
* brightness toggle button ([a7a05ba](https://github.com/git-touch/git-touch/commit/a7a05bab884db8c91ac1af08ff5e22e4f58f29c4))
* cupertino dark mode ([1b7578f](https://github.com/git-touch/git-touch/commit/1b7578f4b48918f22a51e4b1ef9c387b95b6115c))
* dark contributions widget ([d4efab4](https://github.com/git-touch/git-touch/commit/d4efab4af2e0a3bd22890ce55e18a18a643ab5c5))
* dart theme style tweak ([6a872fc](https://github.com/git-touch/git-touch/commit/6a872fc977d46c4149b4598eb36ae63e98f15709))
* event item long press ([9cd38bc](https://github.com/git-touch/git-touch/commit/9cd38bc6403c1ba2316b3a6fbe174924a922c042))
* follow button ([6a94d55](https://github.com/git-touch/git-touch/commit/6a94d552e1bf486dd31677d9053d64def7554d67))
* follow system option ([baf3e43](https://github.com/git-touch/git-touch/commit/baf3e4304552ead1be262e4c47af125d9646e49b))
* force pushed event ([9f1eb49](https://github.com/git-touch/git-touch/commit/9f1eb490890c8a24727bcd2559dc78759d3a6b40))
* gitea api ([405cc03](https://github.com/git-touch/git-touch/commit/405cc03a30bb5494799fea694d2c3ea7e995596c))
* gitlab domain ([05ff1e4](https://github.com/git-touch/git-touch/commit/05ff1e413b7bebdfd9bb27db6ac90b6e718b9a26))
* gitlab login by token ([2b6d45c](https://github.com/git-touch/git-touch/commit/2b6d45c457b24570dfa554fc16b9509b64e49f2b))
* gitlab screen routers ([6bff2b4](https://github.com/git-touch/git-touch/commit/6bff2b44b6050a043dc684e909981d7f1ee8d3bf))
* gitlab user screen ([c6c5465](https://github.com/git-touch/git-touch/commit/c6c5465ad35e77767ab5ca45d9d7099f18446866))
* handle create event ([bb0d9d5](https://github.com/git-touch/git-touch/commit/bb0d9d5d01e0e586d7180297b555c9f4319c5ef9))
* handle release event ([5f340e4](https://github.com/git-touch/git-touch/commit/5f340e45028c7a83ea48bc87771cfd47375d02b8))
* languages chart ([23983fb](https://github.com/git-touch/git-touch/commit/23983fb556083c1a1aa6c8d05ebdb01c3238260c))
* markdown view dark mode ([eac8418](https://github.com/git-touch/git-touch/commit/eac84184af62ccec910feb4dd7263ba68eae19e3))
* open and close issue ([1b7bcdb](https://github.com/git-touch/git-touch/commit/1b7bcdb7bbc503af8fd0750a1eb8234bcf4101b0))
* repo watch ([42c733f](https://github.com/git-touch/git-touch/commit/42c733fe4c7ae2fa6e98f89d8be6095a0e57e2ac))
* review permissiosn ([f757c74](https://github.com/git-touch/git-touch/commit/f757c748ea691c8c1d2f65c2c3402a33a36c18c8))
* save brightness settings ([dd093bc](https://github.com/git-touch/git-touch/commit/dd093bc7f7ee4e4f965d0d2f0628f3d7e2bd7ea0))
* **gitlab:** blob screen ([d91ae0a](https://github.com/git-touch/git-touch/commit/d91ae0a21325330c5dd3de15aeb6ee72a1adaa85))
* **gitlab:** project activity screen ([cb82b48](https://github.com/git-touch/git-touch/commit/cb82b48ed0d29e78a7adf59bccf0352b85e49da9))
* **gitlab:** project icons ([956b57e](https://github.com/git-touch/git-touch/commit/956b57e869f1b80f88b753ad41d1f93a65edb0dc))
* **gitlab:** project screen ([2636e90](https://github.com/git-touch/git-touch/commit/2636e902f29564a92ce5edc41141bfb3791fbad2))
* **gitlab:** repository tree screen ([edd3a8d](https://github.com/git-touch/git-touch/commit/edd3a8d02efc70dcacb8a92d327ba959fa172f51))
* handle svg files ([1b00a0a](https://github.com/git-touch/git-touch/commit/1b00a0ae693d1303215d7b1af2a349dfc1d757bf))
* long press repo item ([e35d5df](https://github.com/git-touch/git-touch/commit/e35d5dfb3aad238fba020a7643f6b3ab7a785e24))
* markdown view base path ([003263d](https://github.com/git-touch/git-touch/commit/003263d955b9cf5b8f1ba0110a7a0749467a2d0a))
* open image view on avatar tap ([ed07ff0](https://github.com/git-touch/git-touch/commit/ed07ff086f9e24477587140c7beeeea7d9ca7167))
* review comment ([c84a503](https://github.com/git-touch/git-touch/commit/c84a503299964e6e2b936a16eae8458771f94d4d))
* use image view in object screen ([3e3e3d1](https://github.com/git-touch/git-touch/commit/3e3e3d1251cfce0c8680ef82c5b3c833805ca8f8))
* use sliding control for cupertino ([5a35cbf](https://github.com/git-touch/git-touch/commit/5a35cbfe39112aae907992b196b2bb94498b1b0c))
# [1.1.0](https://github.com/git-touch/git-touch/compare/v1.0.0...v1.1.0) (2019-10-03)
### Bug Fixes
* add gaps between languages ([7056d51](https://github.com/git-touch/git-touch/commit/7056d512374c863a9e40afcc4aea2ea6d889ebfb))
* add missing files, remove legacy imports ([c4399a9](https://github.com/git-touch/git-touch/commit/c4399a9a72002385a8e917c24d8ef2e9454c4d85))
* add missing links ([814b255](https://github.com/git-touch/git-touch/commit/814b255f3a250f1d6a32c9ba68d4f4c6b9cd008e))
* add white background ([cce67cc](https://github.com/git-touch/git-touch/commit/cce67cccda1a1d02a4729ab7f3767fa37e44380b))
* always show trailing widgets ([0fe8fc5](https://github.com/git-touch/git-touch/commit/0fe8fc59822637796595a2cbb8f3897ae7419b7c))
* branch selection ([ac4fe0b](https://github.com/git-touch/git-touch/commit/ac4fe0b2ed39a7a56d773001d7e1f5b31ac0f1a2))
* commit without related user ([b2b6ef4](https://github.com/git-touch/git-touch/commit/b2b6ef47958c58de5f70f2da569d9bdf65e4163a))
* contributions initial position ([7606f6e](https://github.com/git-touch/git-touch/commit/7606f6ec1256a5ff5d1e6095cb7cfb94dde5bb27))
* correct disk usage ([c3af4e7](https://github.com/git-touch/git-touch/commit/c3af4e7d91f1cd14ae725ffd17eb698f67a7276f))
* current branch name ([89786c3](https://github.com/git-touch/git-touch/commit/89786c307ec3c4e543a8e0ce6f77b8a4faefed3b))
* deleted user ([356a7f5](https://github.com/git-touch/git-touch/commit/356a7f5e18a108d5022e6f970437c36476ebe7c7))
* disable animation on replacement ([ae7b124](https://github.com/git-touch/git-touch/commit/ae7b1247b417a2b1cbcee39023fa407f2797a236))
* disable branch selection if less than 2 ([04f483a](https://github.com/git-touch/git-touch/commit/04f483aafea4bba25976888031a2290470d4342d))
* disable sub module click ([8e088ef](https://github.com/git-touch/git-touch/commit/8e088ef701fad325398b6dfdf3815485a616b099))
* disable tab switch if loading ([a1fe2df](https://github.com/git-touch/git-touch/commit/a1fe2df552bf4bec8ae881b87267d38cbce5bb34))
* dispose ([966fa82](https://github.com/git-touch/git-touch/commit/966fa824ed99c06516f5a50708b2fed7a7246c26))
* domain comparison ([b958ddf](https://github.com/git-touch/git-touch/commit/b958ddf0cfde2d23ba586870df56f1e3b85ece79))
* duplicated class name ([af25486](https://github.com/git-touch/git-touch/commit/af25486a9c140dd38176ed357f7298e16b2c2b2b))
* fetch 2x items if filter applied ([f580d4b](https://github.com/git-touch/git-touch/commit/f580d4b96c0e89e0655f0cd3021353c9401ce041))
* folders first ([814ac92](https://github.com/git-touch/git-touch/commit/814ac926a13ff32fe4d25f7839ab2acf7d2ba175))
* handle commit user null ([cc8ea1d](https://github.com/git-touch/git-touch/commit/cc8ea1d39a8298801b20267629d0f4d2f2cb2e34))
* handle default branch ref null case ([cbfa622](https://github.com/git-touch/git-touch/commit/cbfa6221e47a0649c13c437958ba34d9c662ad13))
* handle emoji characters ([c06179e](https://github.com/git-touch/git-touch/commit/c06179e1096cfb1b992c8d5e595096a637aebfb4))
* handle language color null ([b083c4f](https://github.com/git-touch/git-touch/commit/b083c4fadd1a886e6d116416baaf9ccbf2ad750e))
* handle README content null ([6539eb6](https://github.com/git-touch/git-touch/commit/6539eb6ef409961f375e21bab7cfd3354e417604))
* hide GitLab account login entry ([003a8e9](https://github.com/git-touch/git-touch/commit/003a8e9fbe5ecdd164bcd43a4ef5800c6cf7ee0c))
* hide language bar if no data ([7562f39](https://github.com/git-touch/git-touch/commit/7562f391cc4329ccfefbf1d33fce6d5064f275f1))
* horizontal scroll ([9b1921a](https://github.com/git-touch/git-touch/commit/9b1921adda3a56ca157fc938066b1bf897930d04))
* issues load more ([94cd4ec](https://github.com/git-touch/git-touch/commit/94cd4ec9459b64d7c958bdf33bfee473704f0f07))
* items not fill in list view ([04edb92](https://github.com/git-touch/git-touch/commit/04edb9247af066edee6c08ae6646acc50373cf7c))
* label color ([eb9de95](https://github.com/git-touch/git-touch/commit/eb9de95efc493285d68b91ac357a3c44c070ff46))
* language color at trending screen ([411a4b9](https://github.com/git-touch/git-touch/commit/411a4b981ef5a138750977dcd196fd76114b95d9))
* limit to ascii ([ee61509](https://github.com/git-touch/git-touch/commit/ee615097e7665fb3b72d226e24a89a8f48bc99c3))
* link tap highlight ([27f4bbc](https://github.com/git-touch/git-touch/commit/27f4bbc690b5cdcf1d4e96589521b7eb2fb83717))
* list scaffold refresh feature ([0c54611](https://github.com/git-touch/git-touch/commit/0c54611345ddfb01819f82fc68736441bbf0b3f8))
* mark all as read ([0d16490](https://github.com/git-touch/git-touch/commit/0d164904f1357c484529e75a2c4d8d64fb726107))
* material actions style ([eadef89](https://github.com/git-touch/git-touch/commit/eadef899d5989251b1fd9619b0408a3025b545bd))
* multi line body ([bac4ab4](https://github.com/git-touch/git-touch/commit/bac4ab4c62f43e823a50564b8017c46d864259b9))
* notification item state query ([49902f2](https://github.com/git-touch/git-touch/commit/49902f2999099cf88170283e13f24f2d4eae5e21))
* object screen ([87bb4d5](https://github.com/git-touch/git-touch/commit/87bb4d5513563aa78b2735a6836853b2f7cefd64))
* physical pixel border ([9487cc1](https://github.com/git-touch/git-touch/commit/9487cc1bc60e7c5025ae459e48f36c85aa0fdcfc))
* refresh scaffold when trailing builder null ([e6d6835](https://github.com/git-touch/git-touch/commit/e6d68356615317e399db519233b266867bb249e7))
* release notification item tap ([a4d00e5](https://github.com/git-touch/git-touch/commit/a4d00e5a81ff5fe412015d8d0d44efda756d5d54))
* remove background color for ink effect ([ddcd39c](https://github.com/git-touch/git-touch/commit/ddcd39c438a871e05afae3c2f7c26be3bf5059a5))
* remove previous account if duplicated ([f2e3120](https://github.com/git-touch/git-touch/commit/f2e312079b20011b8f0c1c76c86f49d274745995))
* replace deprecated pinned api ([4db467d](https://github.com/git-touch/git-touch/commit/4db467d212a34c41b1281fc6be75b9ba9b054b26))
* repo item link ([b610af4](https://github.com/git-touch/git-touch/commit/b610af44a128b5be318a4591b837555087f2b63c))
* repo name containing dot at notification screen ([e5e3831](https://github.com/git-touch/git-touch/commit/e5e38315bea0d6fa04c7e1b7ab4b60b4688cac92))
* show repo owner at user stars screen ([0b57a59](https://github.com/git-touch/git-touch/commit/0b57a59392df9a341a67edb811f9dd57b5b2a724))
* star and fork count 0 case ([ec1d995](https://github.com/git-touch/git-touch/commit/ec1d9956607cf66b06fc2ff508e0d570ee9b8c03))
* started -> starred ([2914d0c](https://github.com/git-touch/git-touch/commit/2914d0c629e2deffc7f4b3dad126316dd20e04af))
* table view style ([9bc5c2b](https://github.com/git-touch/git-touch/commit/9bc5c2b96a69c6ddec32119c04bf3dfc01f3fc31))
* trending api ([cac2c66](https://github.com/git-touch/git-touch/commit/cac2c664ccf923bb00ddbf2925025ffa0635e0d5))
* update data after action ([206e533](https://github.com/git-touch/git-touch/commit/206e53346318f1f42afd623949b290b242f8580b))
* use common push route method for span link ([200b250](https://github.com/git-touch/git-touch/commit/200b2509268aa6ed1844aacda65a4750d3d574ae))
* use default branch ([a2cb2fb](https://github.com/git-touch/git-touch/commit/a2cb2fb9e979d7ef751ffd0bb081e61e43fbecb5))
* use readme api ([b07b25f](https://github.com/git-touch/git-touch/commit/b07b25fca0a56057a0f108366ef254fdcb7df69b))
* use spdx id of license ([1a9f708](https://github.com/git-touch/git-touch/commit/1a9f7083ee2a6ba49be22de842a3b1b45d35d684))
* user type ([755aba7](https://github.com/git-touch/git-touch/commit/755aba7727939a74a66516469b48cd6c71881617))
* users screen title ([bd4ed63](https://github.com/git-touch/git-touch/commit/bd4ed6382cca9b8d4e35033f6de75f824344f2e2))
* users star or watch repo ([df485ed](https://github.com/git-touch/git-touch/commit/df485edcd4ca19624fcf070ffa7cc8d6ab09b54a))
* widget list contains null ([cb8a879](https://github.com/git-touch/git-touch/commit/cb8a8799ab979e0cdb062684ed28986e9df55b00))
* widget span for branch name ([ca11d0f](https://github.com/git-touch/git-touch/commit/ca11d0f0d5d5c38876b510136ce23370413a4229))
### Features
* adapter picker for material theme ([fb4c12d](https://github.com/git-touch/git-touch/commit/fb4c12d1a5a29dc51f49496f543fd6676c327839))
* add and remove reactions ([3bc1e7e](https://github.com/git-touch/git-touch/commit/3bc1e7edcd97988b347a1a406d67a662acd42846))
* add avatar placeholder ([c300113](https://github.com/git-touch/git-touch/commit/c300113b8a0f7fbddf494d3b537ffcd3f53b8acf))
* add commit build status ([a48a35e](https://github.com/git-touch/git-touch/commit/a48a35ec4fce035a9e722c864249eb6784591b6a))
* add contributions graph to user screen ([c6d9b06](https://github.com/git-touch/git-touch/commit/c6d9b067b1bf6c969b546f78831a35e914523761))
* add credits of fonts ([0d5fef8](https://github.com/git-touch/git-touch/commit/0d5fef8dd770425795a2dd4c43139d6319349945))
* add credits screen ([00cbac4](https://github.com/git-touch/git-touch/commit/00cbac48585a33e9ea4c68ca41199a331a9ac299))
* add feedback entry ([c54df10](https://github.com/git-touch/git-touch/commit/c54df1023405af023f83c07c4c1f69eb97ee9d1c))
* add go to review entry ([f4dd41e](https://github.com/git-touch/git-touch/commit/f4dd41e3ff9e8ed54d5eb3632bd3de001e9b7718))
* add issue, pull request and commit entry ([08e7c99](https://github.com/git-touch/git-touch/commit/08e7c99c6431f0152ccb7dbe6b0239e2b8757c42))
* add more information for users screen ([f3b5476](https://github.com/git-touch/git-touch/commit/f3b547668c84586484b1db20d8fdd5b638891f01))
* add news filter ([049f44b](https://github.com/git-touch/git-touch/commit/049f44b5f45fcbc5a70835f4347b820f9ee6744f))
* add organization screen ([7182268](https://github.com/git-touch/git-touch/commit/718226860edb3bef09807518d8876e0269c10ff0))
* add popular monospace fonts ([7a9fb0f](https://github.com/git-touch/git-touch/commit/7a9fb0ffeec76e288216434d4120db3817bf8d10))
* add project entry ([01d7fd2](https://github.com/git-touch/git-touch/commit/01d7fd2fc11ffa32714f7faf1ee8154f9983d63c))
* add reaction emoji to issue screen ([af79d33](https://github.com/git-touch/git-touch/commit/af79d33a7f36d242706aa39e03d3d5b526d41456))
* add releases ([f9fcf42](https://github.com/git-touch/git-touch/commit/f9fcf42c98a7c9006e03cc4056dff4622c4d532e))
* add scrollbar ([5089ac6](https://github.com/git-touch/git-touch/commit/5089ac6bb078f349d9e98f380662e701cba0c1ba))
* add topics to repo screen ([3f2b9ed](https://github.com/git-touch/git-touch/commit/3f2b9ed56621bf14ec55d6e65ccc302d12f8ed0e))
* add trending developers ([91d6a4b](https://github.com/git-touch/git-touch/commit/91d6a4b2a3ba72738885ff8f5032c6c8fd6ed728))
* add trending screen ([c06ef90](https://github.com/git-touch/git-touch/commit/c06ef90618b3a58100f747b4475bcb88f386238b))
* add users and issues search ([cefd0bc](https://github.com/git-touch/git-touch/commit/cefd0bcb5c5f05f6b71999c5b2bed8902410b71e))
* add view owner action at repo screen ([83c22bd](https://github.com/git-touch/git-touch/commit/83c22bda9acb9f113d4e4f1829721a39d7a2e705))
* apply github markdown style ([68dacab](https://github.com/git-touch/git-touch/commit/68dacabfbddbed5e7df5a70dd6832ae3d199b279))
* border left padding ([3506609](https://github.com/git-touch/git-touch/commit/3506609024f70968f3e1834d144a37735f1e7777))
* bottom navigation style ([68c1be4](https://github.com/git-touch/git-touch/commit/68c1be406d1d80fd3aa3acb2245742825631be57))
* code settings ([a47d84a](https://github.com/git-touch/git-touch/commit/a47d84a6cc83df490366e50a14f8b576356ad307))
* commits list screen ([a7155d4](https://github.com/git-touch/git-touch/commit/a7155d4def99e3be6aa71595aca5386f0cb8d812))
* create issue ([4b8807e](https://github.com/git-touch/git-touch/commit/4b8807e2f19a44e7aafea0f335642caf01e1751e))
* disable link to self of repo screen ([932a107](https://github.com/git-touch/git-touch/commit/932a10797e21c1ddd1ead85235d7c861150606fe))
* disable refresh on tab switch ([09c1ded](https://github.com/git-touch/git-touch/commit/09c1ded405d7605951085f84f1703d2cdb612a23))
* extract markdown view, add basic style ([70f83df](https://github.com/git-touch/git-touch/commit/70f83df1fe07ab55186f0ef8355caf6f60230443))
* format numbers with group seperator ([ede2d06](https://github.com/git-touch/git-touch/commit/ede2d064f10e361c4d60142600c05ef4f2698abc))
* gitlab account login ([beb8974](https://github.com/git-touch/git-touch/commit/beb8974caa82f4679898f9f53f3c6abca0b5f765))
* handle markdown link tap ([b119a42](https://github.com/git-touch/git-touch/commit/b119a425cd75c7ceb69c5e2a12801218241690b7))
* hide issue entry if not enabled ([9c5ef59](https://github.com/git-touch/git-touch/commit/9c5ef590131467f10d9f2b32c5eb829bfcda9b79))
* hide owner of user page repos if same ([9bdb01e](https://github.com/git-touch/git-touch/commit/9bdb01e04ce1ed50b7db9437f731b844907ca813))
* issue screen style ([1108346](https://github.com/git-touch/git-touch/commit/110834616352bb87e11ef85f3847c7742d4722e8))
* issues screen info ([bf3f077](https://github.com/git-touch/git-touch/commit/bf3f077efa416220e486c20ea138f741a506320f))
* issues screen style ([2c6a3d0](https://github.com/git-touch/git-touch/commit/2c6a3d097c96a4da092ef1ea3178b6aaa2983817))
* launch google maps for location ([58ee485](https://github.com/git-touch/git-touch/commit/58ee48527f38328b3a549902d408336f0d9504db))
* list group style ([3055c29](https://github.com/git-touch/git-touch/commit/3055c29e7b8d15f8c8cb50a28397ee2ed289c193))
* login by access token ([8869c6b](https://github.com/git-touch/git-touch/commit/8869c6b456180cf4f31493030fe680b595178710))
* news screen style ([321ab0a](https://github.com/git-touch/git-touch/commit/321ab0a60a2a340f41404a440e69f8b7a65ca87d))
* news screen time, style tweaks ([46e380c](https://github.com/git-touch/git-touch/commit/46e380c10d07f61b25d232ea11725e371f8259a0))
* notification badge color, remove unnecessary keyword new ([ae1536b](https://github.com/git-touch/git-touch/commit/ae1536b34892026c0f98e082ac3ed950c1f14b53))
* notification style ([1eafcff](https://github.com/git-touch/git-touch/commit/1eafcff12498cd664e6b72f8d74313e2bb70b628))
* organization members ([1c5b624](https://github.com/git-touch/git-touch/commit/1c5b62430ecaf32c4cd3f4dba77495d8d93066d8))
* organization screen ([45687a4](https://github.com/git-touch/git-touch/commit/45687a48a6c3b226a95ecd11f26cf97de9b70711))
* pushEvent: show commits, click to launch code compare page ([76d8138](https://github.com/git-touch/git-touch/commit/76d8138716dfea115d55e344a59ce7cd53526c35))
* remove news filter ([0e87278](https://github.com/git-touch/git-touch/commit/0e8727891e0efe3f79adfb6cc6fe4f36646caa00))
* repo item style ([354520d](https://github.com/git-touch/git-touch/commit/354520d9c11c79912d334115af6807d564f670d7))
* repo language ratio bar ([029beba](https://github.com/git-touch/git-touch/commit/029bebaf0dce8f05c1328c3e0fb926155763b122))
* repository count ([42debe9](https://github.com/git-touch/git-touch/commit/42debe9bf3887c47d9983e172d9b733a8448b603))
* repository forks screen ([250b520](https://github.com/git-touch/git-touch/commit/250b5206625457e464a534fae8522385d2d63b2e))
* select branch with picker ([ce00adf](https://github.com/git-touch/git-touch/commit/ce00adf54c2e7a2463619080edcefd83c7356144))
* settings style ([c24fd46](https://github.com/git-touch/git-touch/commit/c24fd4600c52024a6c215d68c3c7328626102fee))
* settings table view style ([7f9669e](https://github.com/git-touch/git-touch/commit/7f9669eaeaebe3425ba8e934721bbcfd8d39cd23))
* show branches count ([4fb32fa](https://github.com/git-touch/git-touch/commit/4fb32fa818f00d83cdc85114231fcbdd3bb1f7d9))
* show code blob ([3f59d56](https://github.com/git-touch/git-touch/commit/3f59d5694dd5b6a045b0ad642e5167a9f4e0faf6))
* show notification status on load ([80e6332](https://github.com/git-touch/git-touch/commit/80e63324325cab6b1f8e588f1b9928b7d5ca8fb0))
* show pinned items ([8cd1d9f](https://github.com/git-touch/git-touch/commit/8cd1d9f1a5125681e08c37d4db5f0d84fa460684))
* show repository directory ([09f91f7](https://github.com/git-touch/git-touch/commit/09f91f77ae9fe359ecbec0946cdd677df9e26939))
* specify branch of commits screen ([8bc2024](https://github.com/git-touch/git-touch/commit/8bc2024e4142610f55f59396ccb0bfc989a43816))
* style tweak ([7d6d1ec](https://github.com/git-touch/git-touch/commit/7d6d1ecd46083190546f19204f078db8c68c86f8))
* style tweaks ([2acf857](https://github.com/git-touch/git-touch/commit/2acf85742bf2dfb82a14a786f881b83b31dc0078))
* style tweaks ([9fe6639](https://github.com/git-touch/git-touch/commit/9fe6639f6619b3065fdbb89ec498c6423a9d0595))
* style tweaks ([6312da8](https://github.com/git-touch/git-touch/commit/6312da876a44b93afa037091c8ed366d5759dac7))
* style tweaks ([e3cba91](https://github.com/git-touch/git-touch/commit/e3cba91b9c508322b01ac5b73978cc443fd1cb67))
* text contains organization ([562c67d](https://github.com/git-touch/git-touch/commit/562c67dac004de2c7765fbf9198328e0f0f842b2))
* text field placeholder ([cb87c32](https://github.com/git-touch/git-touch/commit/cb87c32de7482bac8d718102e5ecf5adc8a44eed))
* use popup menu button for material ([951c50c](https://github.com/git-touch/git-touch/commit/951c50c2a983cef1425842090004bca3aaa8b744))
* use seti icons ([8b580e2](https://github.com/git-touch/git-touch/commit/8b580e2376517729bf398ebd1672e40b5654b94b))
* user screen repos title ([3354ac4](https://github.com/git-touch/git-touch/commit/3354ac4e6bc14ae6646260e0eb66fc14bf64de54))
* user screen style ([a589e51](https://github.com/git-touch/git-touch/commit/a589e518bbd926fcdab156320c7d5b7addca8849))
* user screen style tweaks ([c78c010](https://github.com/git-touch/git-touch/commit/c78c010fab7055fd14bdc1779e9590d185ba94fc))
* user screen style tweaks ([2575576](https://github.com/git-touch/git-touch/commit/2575576e332c5185763e4577d9c8965e3aca49e8))
* view image files ([83f3fbb](https://github.com/git-touch/git-touch/commit/83f3fbbdcfab63392e663010ad676fa1aebb12fe))
* watch repository ([488f5fc](https://github.com/git-touch/git-touch/commit/488f5fc8f01acf2d73f23155854a4559de115ae2))
# [1.0.0](https://github.com/git-touch/git-touch/compare/a051a54549f70a8ba7be33a5b9b04ae5ff5d98a0...v1.0.0) (2019-02-12)
### Bug Fixes
* add missing internet permission to android manifest ([56f598e](https://github.com/git-touch/git-touch/commit/56f598e73228ffa6256cec4ca0ff519e70209002))
* check mounted before setState ([ddb9497](https://github.com/git-touch/git-touch/commit/ddb9497ab835e950fd2a4df7e59e37eae81602b8))
* checkout code of closeWebView fix PR ([d25b979](https://github.com/git-touch/git-touch/commit/d25b9791382b2fd24def5923a89fe01155b1cbe6))
* event item tap screen ([d476018](https://github.com/git-touch/git-touch/commit/d476018092e5110689cafe397fff15e6090e0954))
* event item tapable revert ([5b4ff92](https://github.com/git-touch/git-touch/commit/5b4ff92138864b6f39e0cbe8942413c1ef5022e8))
* handle notification item type: Commit ([84596d3](https://github.com/git-touch/git-touch/commit/84596d3fcf698c9cf9364cd6b77860c5d5753467))
* long list at material theme ([ce11da3](https://github.com/git-touch/git-touch/commit/ce11da379a3f209f7af030f0ce7e5397f56c2276))
* move fetch to next tick to get context ([73907f5](https://github.com/git-touch/git-touch/commit/73907f51b4462a811aa4c5b7f3449a852a773296))
* refresh scaffold, dash graphql syntax error ([5c4d29c](https://github.com/git-touch/git-touch/commit/5c4d29c5227855302e689ca254159057abb7244d))
* remove loading when reach to end ([6933c04](https://github.com/git-touch/git-touch/commit/6933c044723b533672de627c0546be863ac845eb))
* replace hard code ([c7a16f6](https://github.com/git-touch/git-touch/commit/c7a16f67a0ca8d6df3340fbcdbff468f03b8e6ca))
* style and dependency ([b4c21a1](https://github.com/git-touch/git-touch/commit/b4c21a13724983e4a64b2fe579ce0a28c1936542))
* style of pull request and issue screens ([c9d4f4c](https://github.com/git-touch/git-touch/commit/c9d4f4c999404421c3fbeb07a41685abebaccf3e))
* styles ([9ce9589](https://github.com/git-touch/git-touch/commit/9ce9589b2ce005a0f1cee0a2dd1d815e8d5a67dd))
* test files ([5f94c0f](https://github.com/git-touch/git-touch/commit/5f94c0f80f97f98bb3a81560a3ed93596705bc9a))
### Features
* add actions to repo, user and issue screen ([d9bec75](https://github.com/git-touch/git-touch/commit/d9bec759e3bcc2715878c29f907520ac5c19da8b))
* add all timeline item types ([7a229d0](https://github.com/git-touch/git-touch/commit/7a229d079786b1e6e51a66dc5e7aea8b75839ba9))
* add android deep link ([5c0870a](https://github.com/git-touch/git-touch/commit/5c0870a80bc6c098aa167fc8bc8ba5ef32db45cf))
* add android notification screen ([b07aee5](https://github.com/git-touch/git-touch/commit/b07aee5aad6cd5117c41d82d033e8bca9dc4a896))
* add error screen to handle network and other errors ([0a26509](https://github.com/git-touch/git-touch/commit/0a26509cddb852c8c714539bcd5c63ac6fb87889))
* add files and commits links for repo screen ([925472f](https://github.com/git-touch/git-touch/commit/925472f151ce1ef1ab2dafb9c61b2c4ee7e36d7f))
* add iOS icons, add display name ([3a254bd](https://github.com/git-touch/git-touch/commit/3a254bd0aa0c6339e66c207e41078cf7e7e07f98))
* add issue and pull request state ([fb9fd4c](https://github.com/git-touch/git-touch/commit/fb9fd4cb3a5fdc1b528900e4fb791cb10705031a))
* add loading widget when receiving url scheme ([e1170d4](https://github.com/git-touch/git-touch/commit/e1170d411cff0169299c389ad61d1ec2165062ec))
* add more event type ([9ae00df](https://github.com/git-touch/git-touch/commit/9ae00dff6d591cf20e76cebe4892d78dedacfc30))
* add notification page ([a051a54](https://github.com/git-touch/git-touch/commit/a051a54549f70a8ba7be33a5b9b04ae5ff5d98a0))
* add Octicons ([d86c2c3](https://github.com/git-touch/git-touch/commit/d86c2c3b4999826869c46a9c41df29c1ba2336c9))
* add placeholder for empty list ([5298c87](https://github.com/git-touch/git-touch/commit/5298c8736f8f6787ad43145cac50d8d31fcf9eee))
* add repo item, extract list group widget ([f141405](https://github.com/git-touch/git-touch/commit/f1414057e0a10803f00dc9aa8c8ea531e8a2633d))
* add repo's issues and pull requests screen ([5535631](https://github.com/git-touch/git-touch/commit/55356315c437143ab2c3f06d254539fa6e1e2ebb))
* add search screen ([8e86e85](https://github.com/git-touch/git-touch/commit/8e86e85b553b21269e2eab965d130bafaeb93e36))
* add search screen ([992c7e0](https://github.com/git-touch/git-touch/commit/992c7e0cc6c7cd3782df00eab77b231af141bd1f))
* add tips for unimplemented event types ([374a39c](https://github.com/git-touch/git-touch/commit/374a39c4205b5ff29a5dda951856c91920561d21))
* add user screen ([3c83804](https://github.com/git-touch/git-touch/commit/3c83804b3d962f919985b57f8d99c2464ff29835))
* add users screen: following and followers ([66c040e](https://github.com/git-touch/git-touch/commit/66c040e5239c9a45fd55cfa5a0acfe8fd676c6e7))
* add users' repo screen ([ab75500](https://github.com/git-touch/git-touch/commit/ab755005b79d0ef09ffd75c9887bb3b302daa95a))
* android icons and display name ([282d29f](https://github.com/git-touch/git-touch/commit/282d29f68f4745efab7b3ff6a6152abe446e4683))
* custom event payload type ([6aa65b8](https://github.com/git-touch/git-touch/commit/6aa65b857ff9faa805f7be931eb404814bed7c39))
* extract issue and pull request common widget, add more type ([7c6c211](https://github.com/git-touch/git-touch/commit/7c6c211d1c3a2121193f43135ee01c3f3add226c))
* extract provider, add android news screen ([908d6df](https://github.com/git-touch/git-touch/commit/908d6df478cc4a38f3af4fcfa7a2cda5153c9e15))
* github oauth login ([543f8c8](https://github.com/git-touch/git-touch/commit/543f8c82ea421b0129fbb529daeb0f914c45d309))
* home screen style, add pull request screen ([1624027](https://github.com/git-touch/git-touch/commit/16240278f67a2f5fb3c5ba9152bf39b5d31b0b92))
* inbox screen ([8e678a3](https://github.com/git-touch/git-touch/commit/8e678a37d4a98c54989ba1d206bffef1173166a0))
* iOS URL scheme config ([ef03caa](https://github.com/git-touch/git-touch/commit/ef03caa135c536e04a121686a27308da9a359224))
* login screen style, add settings screen, extract simple scaffold ([434781a](https://github.com/git-touch/git-touch/commit/434781a27e9d99aecb201c488a1f0a8d951c51bd))
* notification filters ([e16d6c2](https://github.com/git-touch/git-touch/commit/e16d6c24680bba0d29809bd2652db233621efd2e))
* notification icon badge ([c047aae](https://github.com/git-touch/git-touch/commit/c047aae099c1c71e2a7c1aeaa02fec29aa161d8f))
* notification mark as read ([c0629c5](https://github.com/git-touch/git-touch/commit/c0629c5739109459556b2ef2b35176df590287a4))
* notification page style ([2458c63](https://github.com/git-touch/git-touch/commit/2458c63a0c12bdb5985416faa3a042176241a042))
* notification screen ([9043322](https://github.com/git-touch/git-touch/commit/90433222012ae6af7c79df82a2f00e49ee3dd7e5))
* notification screen filter ([7c35bb7](https://github.com/git-touch/git-touch/commit/7c35bb7ffb4d2144d78ff8b2a29816b46258e2e5))
* repo screen ([5664591](https://github.com/git-touch/git-touch/commit/56645910e4aa85f089a53025d7fb8713040923f8))
* settings screen ([0a1de91](https://github.com/git-touch/git-touch/commit/0a1de9156993d2d6a3c970d5b4d12c7212e9ba0e))
* style of home and notification screen ([4e28608](https://github.com/git-touch/git-touch/commit/4e2860871402a4e0cfa6c076c6260b75780ff8d6))
* user screen ([a374a57](https://github.com/git-touch/git-touch/commit/a374a57f8f7d0129e264c0a7021eec9192a992e0))
* user screen style ([7a18277](https://github.com/git-touch/git-touch/commit/7a18277ac2130d867ac592b0555aeb441ea0fd28))
* users' star repos ([813a956](https://github.com/git-touch/git-touch/commit/813a95666ed26171953b42abe242db7fd35920c4))
- View GitHub trending repositories and users
- View code with syntax highlighting
- Search users and issues
- Login by access token
- Style tweaks
## 1.0.0
- View GitHub repositories
- View GitHub users
- View pull requests and issues
- View notifications
- Star and unstar repositories
- Follow and unfollow users

View File

@ -13,6 +13,7 @@
<p align="center">
<a href="https://apps.apple.com/us/app/gittouch/id1452042346"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-US" alt="Download on the App Store" height="48"></a>
<a href="https://play.google.com/store/apps/details?id=io.github.pd4d10.gittouch"><img alt="Get it on Google Play" title="Google Play" src="https://raw.githubusercontent.com/pd4d10/git-touch/main/assets/google-play-badge.png" height="48" /></a>
<a href="https://f-droid.org/packages/io.github.pd4d10.gittouch/"><img alt="Get it on F-Droid" src="https://upload.wikimedia.org/wikipedia/commons/9/96/%22Get_it_on_F-droid%22_Badge.png" height="48" /></a>
</p>
## Installation
@ -50,7 +51,9 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md).
## Contributors
[![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/0)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/1)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/2)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/3)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/4)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/5)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/6)![](https://sourcerer.io/fame/pd4d10/pd4d10/git-touch/images/7)](https://github.com/pd4d10/git-touch/graphs/contributors)
<a href="https://github.com/git-touch/git-touch/graphs/contributors">
<img src="https://contrib.rocks/image?repo=git-touch/git-touch" />
</a>
## License

50
analysis_options.yaml Normal file
View File

@ -0,0 +1,50 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
prefer_single_quotes: true
always_use_package_imports: true
sort_constructors_first: true
sort_unnamed_constructors_first: true
avoid_types_on_closure_parameters: true
omit_local_variable_types: true
prefer_final_in_for_each: true
prefer_final_locals: true
use_super_parameters: true
use_key_in_widget_constructors: false # waiting for auto fix: https://github.com/dart-lang/sdk/issues/50056
# TODO:
avoid_print: false
use_build_context_synchronously: false
non_constant_identifier_names: false
analyzer:
errors:
todo: ignore
fixme: ignore
invalid_annotation_target: ignore # https://github.com/rrousselGit/freezed#disabling-invalid_annotation_target-warning-and-warning-in-generates-files
# TODO:
unused_element: false
override_on_non_overriding_member: false
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

2
android/.gitignore vendored
View File

@ -9,3 +9,5 @@ GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
**/*.keystore
**/*.jks

View File

@ -26,21 +26,29 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 29
compileSdkVersion 32 // flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "io.github.pd4d10.gittouch"
minSdkVersion 16
targetSdkVersion 29
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion 19 // flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

View File

@ -1,6 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.github.pd4d10.gittouch">
<!-- Flutter needs it to communicate with the running application
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>

View File

@ -1,18 +1,12 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.github.pd4d10.gittouch">
<uses-permission android:name="android.permission.INTERNET"/>
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
<application
android:label="GitTouch"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
@ -26,15 +20,6 @@
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@android:color/white</item>
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -1,6 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.github.pd4d10.gittouch">
<!-- Flutter needs it to communicate with the running application
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>

View File

@ -1,12 +1,12 @@
buildscript {
ext.kotlin_version = '1.3.50'
ext.kotlin_version = '1.6.10'
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@ -14,7 +14,7 @@ buildscript {
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip

View File

@ -1,36 +0,0 @@
targets:
$default:
builders:
json_serializable:
options:
# Options configure how source code is generated for every
# `@JsonSerializable`-annotated class in the package.
#
# The default value for each is listed.
#
# For usage information, reference the corresponding field in
# `JsonSerializableGenerator`.
# any_map: false
# checked: false
# create_factory: true
# create_to_json: true
# disallow_unrecognized_keys: false
# explicit_to_json: false
# field_rename: snake
# generate_to_json_function: true
# include_if_null: true
# nullable: true
# use_wrappers: false
artemis:
options:
schema_mapping:
- schema: lib/github.schema.json
output: lib/graphql/gh.dart
queries_glob: lib/graphql/gh_*.graphql
resolve_type_field: __typename
add_query_prefix: true
scalar_mapping:
- graphql_type: URI
dart_type: String
- graphql_type: GitObjectID
dart_type: String

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
images/avatar-dark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

2
ios/.gitignore vendored
View File

@ -1,3 +1,4 @@
**/dgph
*.mode1v3
*.mode2v3
*.moved-aside
@ -18,6 +19,7 @@ Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/ephemeral/
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<string>11.0</string>
</dict>
</plist>

View File

@ -1,2 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

View File

@ -1,2 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -1,64 +1,86 @@
PODS:
- Flutter (1.0.0)
- in_app_review (0.2.0):
- Flutter
- launch_review (0.0.1):
- Flutter
- package_info (0.0.1):
- maps_launcher (0.0.1):
- Flutter
- share (0.0.1):
- package_info_plus (0.4.5):
- Flutter
- shared_preferences (0.0.1):
- path_provider_ios (0.0.1):
- Flutter
- Sentry (7.27.1):
- Sentry/Core (= 7.27.1)
- Sentry/Core (7.27.1)
- sentry_flutter (0.0.1):
- Flutter
- FlutterMacOS
- Sentry (~> 7.27.1)
- share_plus (0.0.1):
- Flutter
- shared_preferences_ios (0.0.1):
- Flutter
- uni_links (0.0.1):
- Flutter
- url_launcher (0.0.1):
- url_launcher_ios (0.0.1):
- Flutter
- webview_flutter (0.0.1):
- webview_flutter_wkwebview (0.0.1):
- Flutter
DEPENDENCIES:
- Flutter (from `Flutter`)
- in_app_review (from `.symlinks/plugins/in_app_review/ios`)
- launch_review (from `.symlinks/plugins/launch_review/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
- share (from `.symlinks/plugins/share/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- maps_launcher (from `.symlinks/plugins/maps_launcher/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
- uni_links (from `.symlinks/plugins/uni_links/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
SPEC REPOS:
trunk:
- Sentry
EXTERNAL SOURCES:
Flutter:
:path: Flutter
in_app_review:
:path: ".symlinks/plugins/in_app_review/ios"
launch_review:
:path: ".symlinks/plugins/launch_review/ios"
package_info:
:path: ".symlinks/plugins/package_info/ios"
share:
:path: ".symlinks/plugins/share/ios"
shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios"
maps_launcher:
:path: ".symlinks/plugins/maps_launcher/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_ios:
:path: ".symlinks/plugins/path_provider_ios/ios"
sentry_flutter:
:path: ".symlinks/plugins/sentry_flutter/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_ios:
:path: ".symlinks/plugins/shared_preferences_ios/ios"
uni_links:
:path: ".symlinks/plugins/uni_links/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
webview_flutter:
:path: ".symlinks/plugins/webview_flutter/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
webview_flutter_wkwebview:
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
SPEC CHECKSUMS:
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
in_app_review: 4a97249f7a2f539a0f294c2d9196b7fe35e49541
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
launch_review: 75d5a956ba8eaa493e9c9d4bf4c05e505e8d5ed0
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
maps_launcher: 2e5b6a2d664ec6c27f82ffa81b74228d770ab203
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
Sentry: bc644307e2eb6a4c9c55cf117a80b895bb2a25a7
sentry_flutter: 649559f0512e00d3f6fc92cf51f74bc2fe68d1d3
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
COCOAPODS: 1.10.0
COCOAPODS: 1.11.3

View File

@ -3,17 +3,17 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
37EE18F57BCDEA525EB92F36 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B20C9E04554129631AB8EE78 /* Pods_Runner.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
FA131E1B3A78EEDD359ED551 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75205C87EE834F576A3F9103 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -30,14 +30,15 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
03BC239D24FE0B4D9A1D2D83 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
346CC1AE8457DF6B48B85A03 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
2F67270DBA3C43464E2F44EE /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
75205C87EE834F576A3F9103 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9220593D71312B73EFB9B261 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -45,8 +46,7 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
AE6CD52BC7D64064E7B512FF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
B20C9E04554129631AB8EE78 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B984CAF4E26B4FACF6C11EC5 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -54,24 +54,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
37EE18F57BCDEA525EB92F36 /* Pods_Runner.framework in Frameworks */,
FA131E1B3A78EEDD359ED551 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
2E2AB605F70DF2344A2B9E92 /* Pods */ = {
isa = PBXGroup;
children = (
AE6CD52BC7D64064E7B512FF /* Pods-Runner.debug.xcconfig */,
346CC1AE8457DF6B48B85A03 /* Pods-Runner.release.xcconfig */,
03BC239D24FE0B4D9A1D2D83 /* Pods-Runner.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@ -89,8 +78,8 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
2E2AB605F70DF2344A2B9E92 /* Pods */,
A3B00A29EAF11D6D1B02DEAB /* Frameworks */,
A28BA2DF970A8F973E2CD5D0 /* Pods */,
B48C5EFD064AE0D1E1B42C23 /* Frameworks */,
);
sourceTree = "<group>";
};
@ -117,10 +106,21 @@
path = Runner;
sourceTree = "<group>";
};
A3B00A29EAF11D6D1B02DEAB /* Frameworks */ = {
A28BA2DF970A8F973E2CD5D0 /* Pods */ = {
isa = PBXGroup;
children = (
B20C9E04554129631AB8EE78 /* Pods_Runner.framework */,
2F67270DBA3C43464E2F44EE /* Pods-Runner.debug.xcconfig */,
9220593D71312B73EFB9B261 /* Pods-Runner.release.xcconfig */,
B984CAF4E26B4FACF6C11EC5 /* Pods-Runner.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
B48C5EFD064AE0D1E1B42C23 /* Frameworks */ = {
isa = PBXGroup;
children = (
75205C87EE834F576A3F9103 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -132,14 +132,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
CB11531C1F26F7678F621EA7 /* [CP] Check Pods Manifest.lock */,
2B6DD7B668196BD9756C3725 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
58A5FDDED951DFF2FCF219F9 /* [CP] Embed Pods Frameworks */,
C34908B9EA82FDA61F8BDAA0 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@ -156,7 +156,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@ -198,52 +198,7 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
58A5FDDED951DFF2FCF219F9 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
CB11531C1F26F7678F621EA7 /* [CP] Check Pods Manifest.lock */ = {
2B6DD7B668196BD9756C3725 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -265,6 +220,51 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
C34908B9EA82FDA61F8BDAA0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -340,7 +340,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -357,15 +357,10 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.github.pd4d10.gitTouch;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -422,7 +417,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -471,11 +466,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@ -489,15 +485,10 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.github.pd4d10.gitTouch;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -516,15 +507,10 @@
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = io.github.pd4d10.gitTouch;
PRODUCT_NAME = "$(TARGET_NAME)";

View File

@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -27,8 +27,6 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
@ -38,8 +36,8 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -61,8 +59,6 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -4,11 +4,6 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>hi</string>
</array>
<key>CFBundleDisplayName</key>
<string>GitTouch</string>
<key>CFBundleExecutable</key>
@ -63,5 +58,7 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>

View File

@ -1,81 +1,77 @@
import 'package:flutter/material.dart';
import 'package:antd_mobile/antd_mobile.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/home.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/router.dart';
import 'package:intl/locale.dart' as l;
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';
class MyApp extends StatelessWidget {
Widget _buildChild(BuildContext context) {
final theme = Provider.of<ThemeModel>(context);
switch (theme.theme) {
case AppThemeType.cupertino:
return CupertinoApp(
theme: CupertinoThemeData(brightness: theme.brightness),
home: Home(),
localeResolutionCallback:
(Locale locale, Iterable<Locale> supportedLocales) {
for (final supportedLocale in supportedLocales) {
if (locale.languageCode == supportedLocale.languageCode) {
return supportedLocale;
}
}
return supportedLocales.first;
},
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
const Locale('en', ''),
const Locale('hi', ''),
],
);
default:
return MaterialApp(
theme: ThemeData(
brightness: theme.brightness,
primaryColor:
theme.brightness == Brightness.dark ? null : Colors.white,
accentColor: theme.palette.primary,
scaffoldBackgroundColor: theme.palette.background,
pageTransitionsTheme: PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
},
),
),
home: Home(),
localeResolutionCallback:
(Locale locale, Iterable<Locale> supportedLocales) {
for (final supportedLocale in supportedLocales) {
if (locale.languageCode == supportedLocale.languageCode) {
return supportedLocale;
}
}
return supportedLocales.first;
},
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: [
const Locale('en', ''),
const Locale('hi', ''),
],
);
}
}
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final auth = Provider.of<AuthModel>(context);
return Container(key: auth.rootKey, child: _buildChild(context));
final theme = Provider.of<ThemeModel>(context);
return AntTheme(
key: auth.rootKey,
data: AntThemeData(brightness: theme.brightness),
child: Builder(
builder: (context) {
final antTheme = AntTheme.of(context);
return CupertinoApp.router(
routeInformationProvider: router.routeInformationProvider,
routeInformationParser: router.routeInformationParser,
routerDelegate: router.routerDelegate,
theme: CupertinoThemeData(
brightness: theme.brightness,
primaryColor: antTheme.colorPrimary,
scaffoldBackgroundColor: antTheme.colorBox,
textTheme: CupertinoTextThemeData(
textStyle: TextStyle(
fontSize: antTheme.fontSizeMain,
color: antTheme.colorText,
),
),
),
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
localeListResolutionCallback: (locales, supportedLocales) {
// 1. user set locale
// 2. system locale
try {
if (theme.locale != null) {
final intlLocale = l.Locale.parse(theme.locale!);
locales = [
Locale.fromSubtags(
languageCode: intlLocale.languageCode,
countryCode: intlLocale.countryCode,
scriptCode: intlLocale.scriptCode,
),
...locales!
];
}
} catch (err) {
print(err);
}
for (final locale in locales!) {
// this is necessary because Flutter only handles zh_Hans -> zh
// and would not handle non-exist language code
if (AppLocalizations.delegate.isSupported(locale)) {
return locale;
}
}
// 3. if none match, use the default
return supportedLocales.firstWhere((l) => l.languageCode == 'en');
},
);
},
),
);
}
}

View File

@ -1,66 +0,0 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that looks up messages for specific locales by
// delegating to the appropriate library.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:implementation_imports, file_names, unnecessary_new
// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering
// ignore_for_file:argument_type_not_assignable, invalid_assignment
// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases
// ignore_for_file:comment_references
import 'dart:async';
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
import 'package:intl/src/intl_helpers.dart';
import 'messages_en.dart' as messages_en;
import 'messages_hi.dart' as messages_hi;
typedef Future<dynamic> LibraryLoader();
Map<String, LibraryLoader> _deferredLibraries = {
'en': () => new Future.value(null),
'hi': () => new Future.value(null),
};
MessageLookupByLibrary _findExact(String localeName) {
switch (localeName) {
case 'en':
return messages_en.messages;
case 'hi':
return messages_hi.messages;
default:
return null;
}
}
/// User programs should call this before using [localeName] for messages.
Future<bool> initializeMessages(String localeName) async {
var availableLocale = Intl.verifiedLocale(
localeName, (locale) => _deferredLibraries[locale] != null,
onFailure: (_) => null);
if (availableLocale == null) {
return new Future.value(false);
}
var lib = _deferredLibraries[availableLocale];
await (lib == null ? new Future.value(false) : lib());
initializeInternalMessageLookup(() => new CompositeMessageLookup());
messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor);
return new Future.value(true);
}
bool _messagesExistFor(String locale) {
try {
return _findExact(locale) != null;
} catch (e) {
return false;
}
}
MessageLookupByLibrary _findGeneratedMessagesFor(String locale) {
var actualLocale =
Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null);
if (actualLocale == null) return null;
return _findExact(actualLocale);
}

View File

@ -1,127 +0,0 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a en locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'en';
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"about": MessageLookupByLibrary.simpleMessage("about"),
"actions": MessageLookupByLibrary.simpleMessage("Actions"),
"activity": MessageLookupByLibrary.simpleMessage("Activity"),
"all": MessageLookupByLibrary.simpleMessage("All"),
"bitbucketAccount":
MessageLookupByLibrary.simpleMessage("Bitbucket Account"),
"branches": MessageLookupByLibrary.simpleMessage("Branches"),
"brightness": MessageLookupByLibrary.simpleMessage("Brightness"),
"code": MessageLookupByLibrary.simpleMessage("Code"),
"codeTheme": MessageLookupByLibrary.simpleMessage("Code Theme"),
"commits": MessageLookupByLibrary.simpleMessage("Commits"),
"contributors": MessageLookupByLibrary.simpleMessage("Contributors"),
"cupertino": MessageLookupByLibrary.simpleMessage("Cupertino"),
"dark": MessageLookupByLibrary.simpleMessage("Dark"),
"developers": MessageLookupByLibrary.simpleMessage("Developers"),
"email": MessageLookupByLibrary.simpleMessage("Email"),
"events": MessageLookupByLibrary.simpleMessage("Events"),
"explore": MessageLookupByLibrary.simpleMessage("Explore"),
"feedback": MessageLookupByLibrary.simpleMessage("feedback"),
"file": MessageLookupByLibrary.simpleMessage("File"),
"files": MessageLookupByLibrary.simpleMessage("Files"),
"flutter": MessageLookupByLibrary.simpleMessage("Flutter"),
"follow": MessageLookupByLibrary.simpleMessage("Follow"),
"followSystem": MessageLookupByLibrary.simpleMessage("Follow System"),
"followers": MessageLookupByLibrary.simpleMessage("Followers"),
"following": MessageLookupByLibrary.simpleMessage("Following"),
"fontFamily": MessageLookupByLibrary.simpleMessage("Font Family"),
"fontSize": MessageLookupByLibrary.simpleMessage("Font Size"),
"fontStyle": MessageLookupByLibrary.simpleMessage("FONT STYLE"),
"forks": MessageLookupByLibrary.simpleMessage("Forks"),
"gists": MessageLookupByLibrary.simpleMessage("Gists"),
"giteaAccount": MessageLookupByLibrary.simpleMessage("Gitee Account"),
"giteaStatus": MessageLookupByLibrary.simpleMessage("Gitea status"),
"giteeAccount": MessageLookupByLibrary.simpleMessage("Gitee Account"),
"githubAccount": MessageLookupByLibrary.simpleMessage("GitHub Account"),
"githubStatus": MessageLookupByLibrary.simpleMessage("GitHub status"),
"gitlabAccount": MessageLookupByLibrary.simpleMessage("GitLab Account"),
"gitlabStatus": MessageLookupByLibrary.simpleMessage("GitLab status"),
"group": MessageLookupByLibrary.simpleMessage("Group"),
"groups": MessageLookupByLibrary.simpleMessage("Groups"),
"helloWorld": MessageLookupByLibrary.simpleMessage("Hello World!"),
"issue": MessageLookupByLibrary.simpleMessage("Issue"),
"issues": MessageLookupByLibrary.simpleMessage("Issues"),
"light": MessageLookupByLibrary.simpleMessage("Light"),
"longPressToRemoveAccount": MessageLookupByLibrary.simpleMessage(
"Long Press to remove account"),
"markdownRenderEngine":
MessageLookupByLibrary.simpleMessage("Markdown Render Engine"),
"material": MessageLookupByLibrary.simpleMessage("Material"),
"me": MessageLookupByLibrary.simpleMessage("Me"),
"members": MessageLookupByLibrary.simpleMessage("Members"),
"mergeRequests": MessageLookupByLibrary.simpleMessage("Merge Requests"),
"news": MessageLookupByLibrary.simpleMessage("News"),
"notFoundMessage": MessageLookupByLibrary.simpleMessage("Not Found"),
"notFoundTextDisplay": MessageLookupByLibrary.simpleMessage(
"Woops, This page is not implemented yet"),
"notification": MessageLookupByLibrary.simpleMessage("Notification"),
"organizations": MessageLookupByLibrary.simpleMessage("Organizations"),
"participating": MessageLookupByLibrary.simpleMessage("Participating"),
"permissionRequiredMessage": MessageLookupByLibrary.simpleMessage(
"GitTouch needs these permissions"),
"pinnedRepositories":
MessageLookupByLibrary.simpleMessage("pinned repositories"),
"popularRepositories":
MessageLookupByLibrary.simpleMessage("popular repositories"),
"project": MessageLookupByLibrary.simpleMessage("Project"),
"projectActions":
MessageLookupByLibrary.simpleMessage("Project Actions"),
"projects": MessageLookupByLibrary.simpleMessage("Projects"),
"pullRequests": MessageLookupByLibrary.simpleMessage("Pull requests"),
"rateThisApp": MessageLookupByLibrary.simpleMessage("Rate This App"),
"releases": MessageLookupByLibrary.simpleMessage("Releases"),
"removeAccount": MessageLookupByLibrary.simpleMessage("Remove account"),
"repositories": MessageLookupByLibrary.simpleMessage("Repositories"),
"repository": MessageLookupByLibrary.simpleMessage("Repository"),
"repositoryActions":
MessageLookupByLibrary.simpleMessage("Repository Actions"),
"reviewPermissions":
MessageLookupByLibrary.simpleMessage("Review Permissions"),
"scaffoldTheme": MessageLookupByLibrary.simpleMessage("Scaffold Theme"),
"search": MessageLookupByLibrary.simpleMessage("Search"),
"selectAccount": MessageLookupByLibrary.simpleMessage("Select account"),
"settings": MessageLookupByLibrary.simpleMessage("Settings"),
"somethingBadHappens":
MessageLookupByLibrary.simpleMessage("Something bad happens:"),
"sourceCode": MessageLookupByLibrary.simpleMessage("Source Code"),
"stars": MessageLookupByLibrary.simpleMessage("Stars"),
"submitAnIssue":
MessageLookupByLibrary.simpleMessage("Submit an issue"),
"switchAccounts":
MessageLookupByLibrary.simpleMessage("Switch accounts"),
"syntaxHighlighting":
MessageLookupByLibrary.simpleMessage("SYNTAX HIGHLIGHTING"),
"system": MessageLookupByLibrary.simpleMessage("system"),
"teams": MessageLookupByLibrary.simpleMessage("Teams"),
"trending": MessageLookupByLibrary.simpleMessage("Trending"),
"unfollow": MessageLookupByLibrary.simpleMessage("Unfollow"),
"unread": MessageLookupByLibrary.simpleMessage("Unread"),
"user": MessageLookupByLibrary.simpleMessage("User"),
"version": MessageLookupByLibrary.simpleMessage("Version"),
"watchers": MessageLookupByLibrary.simpleMessage("Watchers"),
"webview": MessageLookupByLibrary.simpleMessage("WebView")
};
}

View File

@ -1,130 +0,0 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a hi locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'hi';
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"about": MessageLookupByLibrary.simpleMessage("एप्लिकेशन के बारे में"),
"actions": MessageLookupByLibrary.simpleMessage("कार्रवाई"),
"activity": MessageLookupByLibrary.simpleMessage("गतिविधि"),
"all": MessageLookupByLibrary.simpleMessage("सब"),
"bitbucketAccount":
MessageLookupByLibrary.simpleMessage("बीटबुकेत खाता"),
"branches": MessageLookupByLibrary.simpleMessage("ब्रांच"),
"brightness": MessageLookupByLibrary.simpleMessage("द्य्रुति"),
"code": MessageLookupByLibrary.simpleMessage("कोड"),
"codeTheme": MessageLookupByLibrary.simpleMessage("कोड थीम"),
"commits": MessageLookupByLibrary.simpleMessage("कमिटस"),
"contributors": MessageLookupByLibrary.simpleMessage("योगदानकर्ताओं"),
"cupertino": MessageLookupByLibrary.simpleMessage("क्यूपर्टिनो थीम"),
"dark": MessageLookupByLibrary.simpleMessage("अंधेरा मोड"),
"developers": MessageLookupByLibrary.simpleMessage("डेवेलपर्स"),
"email": MessageLookupByLibrary.simpleMessage("ईमेल"),
"events": MessageLookupByLibrary.simpleMessage("इवेंट्स"),
"explore": MessageLookupByLibrary.simpleMessage("अन्वेषण"),
"feedback": MessageLookupByLibrary.simpleMessage("फीडबैक"),
"file": MessageLookupByLibrary.simpleMessage("फ़ाइल"),
"files": MessageLookupByLibrary.simpleMessage("फ़ाइलें"),
"flutter": MessageLookupByLibrary.simpleMessage("फ्लटर"),
"follow": MessageLookupByLibrary.simpleMessage("फ़ोल्लोव"),
"followSystem":
MessageLookupByLibrary.simpleMessage("सिस्टम का पालन करें"),
"followers": MessageLookupByLibrary.simpleMessage("अनुयायियों"),
"following": MessageLookupByLibrary.simpleMessage("फोल्लोविंग"),
"fontFamily": MessageLookupByLibrary.simpleMessage("फॉण्ट परिवार"),
"fontSize": MessageLookupByLibrary.simpleMessage("फॉण्ट आकार"),
"fontStyle": MessageLookupByLibrary.simpleMessage("फॉण्ट प्रकार"),
"forks": MessageLookupByLibrary.simpleMessage("फोर्क्स"),
"gists": MessageLookupByLibrary.simpleMessage("गिस्ट्स"),
"giteaAccount": MessageLookupByLibrary.simpleMessage("गीते खाता"),
"giteaStatus": MessageLookupByLibrary.simpleMessage("गीते स्टेटस"),
"giteeAccount": MessageLookupByLibrary.simpleMessage("जीती खाता"),
"githubAccount": MessageLookupByLibrary.simpleMessage("गिटहब खाता"),
"githubStatus": MessageLookupByLibrary.simpleMessage("गिटहब स्टेटस"),
"gitlabAccount": MessageLookupByLibrary.simpleMessage("गितलब खाता"),
"gitlabStatus": MessageLookupByLibrary.simpleMessage("गितलब स्टेटस"),
"group": MessageLookupByLibrary.simpleMessage("समूह"),
"groups": MessageLookupByLibrary.simpleMessage("समूहों"),
"helloWorld": MessageLookupByLibrary.simpleMessage("नमस्ते दुनिया"),
"issue": MessageLookupByLibrary.simpleMessage("मुद्दा"),
"issues": MessageLookupByLibrary.simpleMessage("मुद्दे"),
"light": MessageLookupByLibrary.simpleMessage("प्रकाश मोड"),
"longPressToRemoveAccount": MessageLookupByLibrary.simpleMessage(
"खाता हटाने के लिए लंबी प्रेस"),
"markdownRenderEngine":
MessageLookupByLibrary.simpleMessage("मार्कडौं रेंडर इंजन"),
"material": MessageLookupByLibrary.simpleMessage("मटेरियल थीम"),
"me": MessageLookupByLibrary.simpleMessage("मैं"),
"members": MessageLookupByLibrary.simpleMessage("संगठन"),
"mergeRequests": MessageLookupByLibrary.simpleMessage("मर्ज निवेदन"),
"news": MessageLookupByLibrary.simpleMessage("समाचार"),
"notFoundMessage": MessageLookupByLibrary.simpleMessage("नहीं मिला"),
"notFoundTextDisplay": MessageLookupByLibrary.simpleMessage(
"यह पृष्ठ कार्यान्वित नहीं है"),
"notification": MessageLookupByLibrary.simpleMessage("अधिसूचना"),
"organizations": MessageLookupByLibrary.simpleMessage("संगठन"),
"participating": MessageLookupByLibrary.simpleMessage("भाग लेने वाले"),
"permissionRequiredMessage": MessageLookupByLibrary.simpleMessage(
"गिट्टूच के लीये इन अनुमतियों की आवश्यकता है"),
"pinnedRepositories":
MessageLookupByLibrary.simpleMessage("पिन्नेद रेपोसिटोरिएस"),
"popularRepositories":
MessageLookupByLibrary.simpleMessage("प्रसिद्ध रेपोसिटोरिएस"),
"project": MessageLookupByLibrary.simpleMessage("परियोजना"),
"projectActions":
MessageLookupByLibrary.simpleMessage("परियोजना की कार्रवाई"),
"projects": MessageLookupByLibrary.simpleMessage("परियोजनाओं"),
"pullRequests":
MessageLookupByLibrary.simpleMessage("पुल्ल रिक्वेस्ट्स"),
"rateThisApp":
MessageLookupByLibrary.simpleMessage("इस ऐप्लिकेशन को रेट करे"),
"releases": MessageLookupByLibrary.simpleMessage("रेलसेस"),
"removeAccount": MessageLookupByLibrary.simpleMessage("खाता हटाएं"),
"repositories": MessageLookupByLibrary.simpleMessage("रेपोसिटोरिएस"),
"repository": MessageLookupByLibrary.simpleMessage("रिपॉजिटरी"),
"repositoryActions":
MessageLookupByLibrary.simpleMessage("रिपॉजिटरी कार्रवाई"),
"reviewPermissions":
MessageLookupByLibrary.simpleMessage("अनुमति की समीक्षा करें"),
"scaffoldTheme": MessageLookupByLibrary.simpleMessage("स्कैफफोल्ड थीम"),
"search": MessageLookupByLibrary.simpleMessage("खोज"),
"selectAccount": MessageLookupByLibrary.simpleMessage("खाता चुनें"),
"settings": MessageLookupByLibrary.simpleMessage("सेटिंग्स"),
"somethingBadHappens":
MessageLookupByLibrary.simpleMessage("त्रुटि हुई है: "),
"sourceCode":
MessageLookupByLibrary.simpleMessage("एप्लिकेशन स्रोत कोड"),
"stars": MessageLookupByLibrary.simpleMessage("स्टार्स"),
"submitAnIssue":
MessageLookupByLibrary.simpleMessage("एक मुद्दा प्रस्तुत करें"),
"switchAccounts": MessageLookupByLibrary.simpleMessage("खाते बदलें"),
"syntaxHighlighting":
MessageLookupByLibrary.simpleMessage("सिंटेक्स हाइलाइटिंग"),
"system": MessageLookupByLibrary.simpleMessage("सिस्टम"),
"teams": MessageLookupByLibrary.simpleMessage("टीमों"),
"trending": MessageLookupByLibrary.simpleMessage("ट्रेंडिंग"),
"unfollow": MessageLookupByLibrary.simpleMessage("अनफ़ॉलो"),
"unread": MessageLookupByLibrary.simpleMessage("अपठित"),
"user": MessageLookupByLibrary.simpleMessage("उपयोगकर्ता"),
"version": MessageLookupByLibrary.simpleMessage("एप्लिकेशन वेरीज़न"),
"watchers": MessageLookupByLibrary.simpleMessage("नजर रखने वालों"),
"webview": MessageLookupByLibrary.simpleMessage("वेब्वयेव")
};
}

View File

@ -1,947 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'intl/messages_all.dart';
// **************************************************************************
// Generator: Flutter Intl IDE plugin
// Made by Localizely
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars
// ignore_for_file: join_return_with_assignment, prefer_final_in_for_each
// ignore_for_file: avoid_redundant_argument_values
class S {
S();
static S current;
static const AppLocalizationDelegate delegate = AppLocalizationDelegate();
static Future<S> load(Locale locale) {
final name = (locale.countryCode?.isEmpty ?? false)
? locale.languageCode
: locale.toString();
final localeName = Intl.canonicalizedLocale(name);
return initializeMessages(localeName).then((_) {
Intl.defaultLocale = localeName;
S.current = S();
return S.current;
});
}
static S of(BuildContext context) {
return Localizations.of<S>(context, S);
}
/// `Hello World!`
String get helloWorld {
return Intl.message(
'Hello World!',
name: 'helloWorld',
desc: 'The conventional newborn programmer greeting',
args: [],
);
}
/// `News`
String get news {
return Intl.message(
'News',
name: 'news',
desc: 'The News tab',
args: [],
);
}
/// `Notification`
String get notification {
return Intl.message(
'Notification',
name: 'notification',
desc: 'The Notification tab',
args: [],
);
}
/// `Trending`
String get trending {
return Intl.message(
'Trending',
name: 'trending',
desc: 'Trending',
args: [],
);
}
/// `Search`
String get search {
return Intl.message(
'Search',
name: 'search',
desc: 'The Search tab',
args: [],
);
}
/// `Me`
String get me {
return Intl.message(
'Me',
name: 'me',
desc: 'The Me tab',
args: [],
);
}
/// `Participating`
String get participating {
return Intl.message(
'Participating',
name: 'participating',
desc: 'The participating Tab',
args: [],
);
}
/// `Repositories`
String get repositories {
return Intl.message(
'Repositories',
name: 'repositories',
desc: 'repository text',
args: [],
);
}
/// `Unfollow`
String get unfollow {
return Intl.message(
'Unfollow',
name: 'unfollow',
desc: 'unfollow someone',
args: [],
);
}
/// `Follow`
String get follow {
return Intl.message(
'Follow',
name: 'follow',
desc: 'follow someone',
args: [],
);
}
/// `Stars`
String get stars {
return Intl.message(
'Stars',
name: 'stars',
desc: 'stars on a repo',
args: [],
);
}
/// `Followers`
String get followers {
return Intl.message(
'Followers',
name: 'followers',
desc: 'followers for a person',
args: [],
);
}
/// `Following`
String get following {
return Intl.message(
'Following',
name: 'following',
desc: 'people followed by a person',
args: [],
);
}
/// `Events`
String get events {
return Intl.message(
'Events',
name: 'events',
desc: 'events for a user',
args: [],
);
}
/// `Gists`
String get gists {
return Intl.message(
'Gists',
name: 'gists',
desc: 'gists for a user',
args: [],
);
}
/// `Organizations`
String get organizations {
return Intl.message(
'Organizations',
name: 'organizations',
desc: 'organizations for a user',
args: [],
);
}
/// `Members`
String get members {
return Intl.message(
'Members',
name: 'members',
desc: 'members of an organization',
args: [],
);
}
/// `popular repositories`
String get popularRepositories {
return Intl.message(
'popular repositories',
name: 'popularRepositories',
desc: 'popular repositories',
args: [],
);
}
/// `pinned repositories`
String get pinnedRepositories {
return Intl.message(
'pinned repositories',
name: 'pinnedRepositories',
desc: 'pinned repositories',
args: [],
);
}
/// `Settings`
String get settings {
return Intl.message(
'Settings',
name: 'settings',
desc: 'settings',
args: [],
);
}
/// `system`
String get system {
return Intl.message(
'system',
name: 'system',
desc: 'system',
args: [],
);
}
/// `GitHub status`
String get githubStatus {
return Intl.message(
'GitHub status',
name: 'githubStatus',
desc: 'github status',
args: [],
);
}
/// `Review Permissions`
String get reviewPermissions {
return Intl.message(
'Review Permissions',
name: 'reviewPermissions',
desc: 'review Permissions',
args: [],
);
}
/// `GitLab status`
String get gitlabStatus {
return Intl.message(
'GitLab status',
name: 'gitlabStatus',
desc: 'GitLab status',
args: [],
);
}
/// `Gitea status`
String get giteaStatus {
return Intl.message(
'Gitea status',
name: 'giteaStatus',
desc: 'Gitea status',
args: [],
);
}
/// `Switch accounts`
String get switchAccounts {
return Intl.message(
'Switch accounts',
name: 'switchAccounts',
desc: 'Switch accounts',
args: [],
);
}
/// `Brightness`
String get brightness {
return Intl.message(
'Brightness',
name: 'brightness',
desc: 'brightness',
args: [],
);
}
/// `Follow System`
String get followSystem {
return Intl.message(
'Follow System',
name: 'followSystem',
desc: 'follow systems setting',
args: [],
);
}
/// `Light`
String get light {
return Intl.message(
'Light',
name: 'light',
desc: 'light mode',
args: [],
);
}
/// `Dark`
String get dark {
return Intl.message(
'Dark',
name: 'dark',
desc: 'dark mode',
args: [],
);
}
/// `Scaffold Theme`
String get scaffoldTheme {
return Intl.message(
'Scaffold Theme',
name: 'scaffoldTheme',
desc: 'Kind of theme - cupertino or material',
args: [],
);
}
/// `Cupertino`
String get cupertino {
return Intl.message(
'Cupertino',
name: 'cupertino',
desc: 'Cupertino scaffold theme',
args: [],
);
}
/// `Material`
String get material {
return Intl.message(
'Material',
name: 'material',
desc: 'Material scaffold theme',
args: [],
);
}
/// `Code Theme`
String get codeTheme {
return Intl.message(
'Code Theme',
name: 'codeTheme',
desc: 'code theme',
args: [],
);
}
/// `Markdown Render Engine`
String get markdownRenderEngine {
return Intl.message(
'Markdown Render Engine',
name: 'markdownRenderEngine',
desc: 'flutter or webview rendering for markdown',
args: [],
);
}
/// `Flutter`
String get flutter {
return Intl.message(
'Flutter',
name: 'flutter',
desc: 'render flutter for markdown',
args: [],
);
}
/// `WebView`
String get webview {
return Intl.message(
'WebView',
name: 'webview',
desc: 'render webview for markdown',
args: [],
);
}
/// `feedback`
String get feedback {
return Intl.message(
'feedback',
name: 'feedback',
desc: 'provide feedback',
args: [],
);
}
/// `Submit an issue`
String get submitAnIssue {
return Intl.message(
'Submit an issue',
name: 'submitAnIssue',
desc: 'submit issue for app',
args: [],
);
}
/// `Rate This App`
String get rateThisApp {
return Intl.message(
'Rate This App',
name: 'rateThisApp',
desc: 'rate the app',
args: [],
);
}
/// `Email`
String get email {
return Intl.message(
'Email',
name: 'email',
desc: 'Email to report issues',
args: [],
);
}
/// `about`
String get about {
return Intl.message(
'about',
name: 'about',
desc: 'about section',
args: [],
);
}
/// `Version`
String get version {
return Intl.message(
'Version',
name: 'version',
desc: 'app version',
args: [],
);
}
/// `Source Code`
String get sourceCode {
return Intl.message(
'Source Code',
name: 'sourceCode',
desc: 'source code for app',
args: [],
);
}
/// `Repository`
String get repository {
return Intl.message(
'Repository',
name: 'repository',
desc: 'Repository screen title',
args: [],
);
}
/// `Repository Actions`
String get repositoryActions {
return Intl.message(
'Repository Actions',
name: 'repositoryActions',
desc: 'Repository Actions',
args: [],
);
}
/// `Projects`
String get projects {
return Intl.message(
'Projects',
name: 'projects',
desc: 'projects',
args: [],
);
}
/// `Releases`
String get releases {
return Intl.message(
'Releases',
name: 'releases',
desc: 'releases',
args: [],
);
}
/// `Watchers`
String get watchers {
return Intl.message(
'Watchers',
name: 'watchers',
desc: 'watchers',
args: [],
);
}
/// `Forks`
String get forks {
return Intl.message(
'Forks',
name: 'forks',
desc: 'forks',
args: [],
);
}
/// `Issues`
String get issues {
return Intl.message(
'Issues',
name: 'issues',
desc: 'issues',
args: [],
);
}
/// `Pull requests`
String get pullRequests {
return Intl.message(
'Pull requests',
name: 'pullRequests',
desc: 'Pull Requests',
args: [],
);
}
/// `Commits`
String get commits {
return Intl.message(
'Commits',
name: 'commits',
desc: 'Commits',
args: [],
);
}
/// `Branches`
String get branches {
return Intl.message(
'Branches',
name: 'branches',
desc: 'branches',
args: [],
);
}
/// `Contributors`
String get contributors {
return Intl.message(
'Contributors',
name: 'contributors',
desc: 'contributors',
args: [],
);
}
/// `Unread`
String get unread {
return Intl.message(
'Unread',
name: 'unread',
desc: 'unread',
args: [],
);
}
/// `All`
String get all {
return Intl.message(
'All',
name: 'all',
desc: 'all',
args: [],
);
}
/// `Developers`
String get developers {
return Intl.message(
'Developers',
name: 'developers',
desc: 'developers',
args: [],
);
}
/// `Explore`
String get explore {
return Intl.message(
'Explore',
name: 'explore',
desc: 'explore',
args: [],
);
}
/// `Teams`
String get teams {
return Intl.message(
'Teams',
name: 'teams',
desc: 'teams',
args: [],
);
}
/// `File`
String get file {
return Intl.message(
'File',
name: 'file',
desc: 'file',
args: [],
);
}
/// `Files`
String get files {
return Intl.message(
'Files',
name: 'files',
desc: 'file plural',
args: [],
);
}
/// `Actions`
String get actions {
return Intl.message(
'Actions',
name: 'actions',
desc: 'actions',
args: [],
);
}
/// `Groups`
String get groups {
return Intl.message(
'Groups',
name: 'groups',
desc: 'groups',
args: [],
);
}
/// `Merge Requests`
String get mergeRequests {
return Intl.message(
'Merge Requests',
name: 'mergeRequests',
desc: 'Merge request',
args: [],
);
}
/// `Activity`
String get activity {
return Intl.message(
'Activity',
name: 'activity',
desc: 'activity',
args: [],
);
}
/// `Project`
String get project {
return Intl.message(
'Project',
name: 'project',
desc: 'project',
args: [],
);
}
/// `Select account`
String get selectAccount {
return Intl.message(
'Select account',
name: 'selectAccount',
desc: 'select account message',
args: [],
);
}
/// `Remove account`
String get removeAccount {
return Intl.message(
'Remove account',
name: 'removeAccount',
desc: 'remove account',
args: [],
);
}
/// `Something bad happens:`
String get somethingBadHappens {
return Intl.message(
'Something bad happens:',
name: 'somethingBadHappens',
desc: 'error message',
args: [],
);
}
/// `GitHub Account`
String get githubAccount {
return Intl.message(
'GitHub Account',
name: 'githubAccount',
desc: 'Gitea Account',
args: [],
);
}
/// `GitTouch needs these permissions`
String get permissionRequiredMessage {
return Intl.message(
'GitTouch needs these permissions',
name: 'permissionRequiredMessage',
desc: 'Permission Required Message',
args: [],
);
}
/// `Not Found`
String get notFoundMessage {
return Intl.message(
'Not Found',
name: 'notFoundMessage',
desc: 'Not found page header',
args: [],
);
}
/// `Woops, This page is not implemented yet`
String get notFoundTextDisplay {
return Intl.message(
'Woops, This page is not implemented yet',
name: 'notFoundTextDisplay',
desc: 'Not found error message',
args: [],
);
}
/// `GitLab Account`
String get gitlabAccount {
return Intl.message(
'GitLab Account',
name: 'gitlabAccount',
desc: 'Gitlab Account',
args: [],
);
}
/// `Bitbucket Account`
String get bitbucketAccount {
return Intl.message(
'Bitbucket Account',
name: 'bitbucketAccount',
desc: 'Bitbucket Account',
args: [],
);
}
/// `Long Press to remove account`
String get longPressToRemoveAccount {
return Intl.message(
'Long Press to remove account',
name: 'longPressToRemoveAccount',
desc: 'Long Press to remove account',
args: [],
);
}
/// `Gitee Account`
String get giteaAccount {
return Intl.message(
'Gitee Account',
name: 'giteaAccount',
desc: 'Gitea Account',
args: [],
);
}
/// `Gitee Account`
String get giteeAccount {
return Intl.message(
'Gitee Account',
name: 'giteeAccount',
desc: 'Gitee Account',
args: [],
);
}
/// `User`
String get user {
return Intl.message(
'User',
name: 'user',
desc: 'user',
args: [],
);
}
/// `Group`
String get group {
return Intl.message(
'Group',
name: 'group',
desc: 'group',
args: [],
);
}
/// `Issue`
String get issue {
return Intl.message(
'Issue',
name: 'issue',
desc: 'issue',
args: [],
);
}
/// `Code`
String get code {
return Intl.message(
'Code',
name: 'code',
desc: 'Code',
args: [],
);
}
/// `Project Actions`
String get projectActions {
return Intl.message(
'Project Actions',
name: 'projectActions',
desc: 'Project Actions',
args: [],
);
}
/// `SYNTAX HIGHLIGHTING`
String get syntaxHighlighting {
return Intl.message(
'SYNTAX HIGHLIGHTING',
name: 'syntaxHighlighting',
desc: 'Syntax Highlighting',
args: [],
);
}
/// `Font Family`
String get fontFamily {
return Intl.message(
'Font Family',
name: 'fontFamily',
desc: 'Font Family',
args: [],
);
}
/// `Font Size`
String get fontSize {
return Intl.message(
'Font Size',
name: 'fontSize',
desc: 'font size',
args: [],
);
}
/// `FONT STYLE`
String get fontStyle {
return Intl.message(
'FONT STYLE',
name: 'fontStyle',
desc: 'font style',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
const AppLocalizationDelegate();
List<Locale> get supportedLocales {
return const <Locale>[
Locale.fromSubtags(languageCode: 'en'),
Locale.fromSubtags(languageCode: 'hi'),
];
}
@override
bool isSupported(Locale locale) => _isSupported(locale);
@override
Future<S> load(Locale locale) => S.load(locale);
@override
bool shouldReload(AppLocalizationDelegate old) => false;
bool _isSupported(Locale locale) {
if (locale != null) {
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode) {
return true;
}
}
}
return false;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,60 +0,0 @@
fragment T on Ref {
target {
__typename
... on Commit {
oid
url
messageHeadline
committedDate
author {
name
avatarUrl
user {
login
}
}
status {
state
}
history(first: 30, after: $after) {
pageInfo {
hasNextPage
endCursor
}
nodes {
oid
url
messageHeadline
committedDate
author {
name
avatarUrl
user {
login
}
}
status {
state
}
}
}
}
}
}
query GhCommits(
$owner: String!
$name: String!
$ref: String!
$hasRef: Boolean!
$after: String
) {
repository(owner: $owner, name: $name) {
defaultBranchRef @skip(if: $hasRef) {
...T
}
ref(qualifiedName: $ref) @include(if: $hasRef) {
...T
}
}
}

View File

@ -1,43 +0,0 @@
query GhIssues($owner: String!, $name: String!, $cursor: String) {
repository(owner: $owner, name: $name) {
owner {
login
}
name
issues(
states: OPEN
orderBy: { field: CREATED_AT, direction: DESC }
first: 30
after: $cursor
) {
pageInfo {
hasNextPage
endCursor
}
nodes {
repository {
owner {
login
}
name
}
number
title
updatedAt
author {
login
avatarUrl
}
labels(first: 10) {
nodes {
name
color
}
}
comments {
totalCount
}
}
}
}
}

View File

@ -1,12 +0,0 @@
mutation GhOpenIssue($id: ID!, $open: Boolean!) {
reopenIssue(input: { issueId: $id }) @include(if: $open) {
issue {
closed
}
}
closeIssue(input: { issueId: $id }) @skip(if: $open) {
issue {
closed
}
}
}

View File

@ -1,43 +0,0 @@
query GhPulls($owner: String!, $name: String!, $cursor: String) {
repository(owner: $owner, name: $name) {
owner {
login
}
name
pullRequests(
states: OPEN
orderBy: { field: CREATED_AT, direction: DESC }
first: 30
after: $cursor
) {
pageInfo {
hasNextPage
endCursor
}
nodes {
repository {
owner {
login
}
name
}
number
title
updatedAt
author {
login
avatarUrl
}
labels(first: 10) {
nodes {
name
color
}
}
comments {
totalCount
}
}
}
}
}

View File

@ -1,70 +0,0 @@
query GhRepos($owner: String!, $after: String, $isStar: Boolean!) {
user(login: $owner) {
__typename
login
avatarUrl
repositories(
first: 30
after: $after
orderBy: { field: UPDATED_AT, direction: DESC }
) @skip(if: $isStar) {
totalCount # TODO:
pageInfo {
hasNextPage
endCursor
}
nodes {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
updatedAt
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
starredRepositories(
first: 30
after: $after
orderBy: { field: STARRED_AT, direction: DESC }
) @include(if: $isStar) {
pageInfo {
hasNextPage
endCursor
}
nodes {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
updatedAt
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
}
}

View File

@ -1,239 +0,0 @@
query GhUser($login: String!, $isViewer: Boolean!) {
repositoryOwner(login: $login) @skip(if: $isViewer) {
__typename
id
login
avatarUrl
url
... on User {
name
bio
company
location
email
createdAt
websiteUrl
starredRepositories {
totalCount
}
followers {
totalCount
}
following {
totalCount
}
contributionsCollection {
contributionCalendar {
weeks {
contributionDays {
color
}
}
}
}
repositories(
first: 6
ownerAffiliations: OWNER
orderBy: { field: STARGAZERS, direction: DESC }
) {
totalCount
nodes {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
pinnedItems(first: 6) {
totalCount # TODO: Add this for correct generated code
nodes {
__typename
... on Repository {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
}
viewerCanFollow
viewerIsFollowing
}
... on Organization {
name
description
location
email
websiteUrl
createdAt
pinnedItems(first: 6) {
nodes {
__typename
... on Repository {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
}
pinnableItems(first: 6, types: [REPOSITORY]) {
totalCount
nodes {
__typename
... on Repository {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
}
membersWithRole {
totalCount
}
}
}
viewer @include(if: $isViewer) {
id
login
avatarUrl
url
name
bio
company
location
email
createdAt
websiteUrl
starredRepositories {
totalCount
}
followers {
totalCount
}
following {
totalCount
}
contributionsCollection {
contributionCalendar {
weeks {
contributionDays {
color
}
}
}
}
repositories(
first: 6
ownerAffiliations: OWNER
orderBy: { field: STARGAZERS, direction: DESC }
) {
totalCount
nodes {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
pinnedItems(first: 6) {
totalCount # TODO: Add this for correct generated code
nodes {
__typename
... on Repository {
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
}
}
}
viewerCanFollow
viewerIsFollowing
}
}

View File

@ -1,101 +0,0 @@
query GhUsers(
$login: String!
$repoName: String!
$after: String
$isFollowers: Boolean!
$isFollowing: Boolean!
$isMember: Boolean!
$isStar: Boolean!
$isWatch: Boolean!
) {
user(login: $login) @skip(if: $isMember) {
login
name
avatarUrl
company
location
createdAt
followers(first: 30, after: $after) @include(if: $isFollowers) {
pageInfo {
hasNextPage
endCursor
}
nodes {
login
name
avatarUrl
company
location
createdAt
}
}
following(first: 30, after: $after) @include(if: $isFollowing) {
pageInfo {
hasNextPage
endCursor
}
nodes {
login
name
avatarUrl
company
location
createdAt
}
}
}
organization(login: $login) @include(if: $isMember) {
login
name
avatarUrl
location
membersWithRole(first: 30, after: $after) {
pageInfo {
hasNextPage
endCursor
}
nodes {
login
name
avatarUrl
company
location
createdAt
}
}
}
repository(owner: $login, name: $repoName) {
watchers(first: 30, after: $after) @include(if: $isWatch) {
pageInfo {
hasNextPage
endCursor
}
nodes {
login
name
avatarUrl
company
location
createdAt
}
}
stargazers(
first: 30
after: $after
orderBy: { field: STARRED_AT, direction: DESC }
) @include(if: $isStar) {
pageInfo {
hasNextPage
endCursor
}
nodes {
login
name
avatarUrl
company
location
createdAt
}
}
}
}

View File

@ -1,32 +1,40 @@
import 'package:flutter/material.dart';
import 'package:antd_mobile/antd_mobile.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/notification.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/screens/bb_explore.dart';
import 'package:git_touch/screens/bb_teams.dart';
import 'package:git_touch/screens/bb_user.dart';
import 'package:git_touch/screens/ge_search.dart';
import 'package:git_touch/screens/ge_user.dart';
import 'package:git_touch/screens/gl_search.dart';
import 'package:git_touch/screens/gt_orgs.dart';
import 'package:git_touch/screens/gt_user.dart';
import 'package:git_touch/screens/gl_explore.dart';
import 'package:git_touch/screens/gl_groups.dart';
import 'package:git_touch/screens/gl_user.dart';
import 'package:git_touch/screens/login.dart';
import 'package:git_touch/screens/gh_notification.dart';
import 'package:git_touch/screens/gh_user.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/screens/gh_news.dart';
import 'package:git_touch/screens/gh_notification.dart';
import 'package:git_touch/screens/gh_search.dart';
import 'package:git_touch/screens/gh_trending.dart';
import 'package:git_touch/screens/ge_search.dart';
import 'generated/l10n.dart';
import 'package:git_touch/screens/gh_user.dart';
import 'package:git_touch/screens/gl_explore.dart';
import 'package:git_touch/screens/gl_groups.dart';
import 'package:git_touch/screens/gl_search.dart';
import 'package:git_touch/screens/gl_user.dart';
import 'package:git_touch/screens/go_search.dart';
import 'package:git_touch/screens/go_user.dart';
import 'package:git_touch/screens/gt_orgs.dart';
import 'package:git_touch/screens/gt_user.dart';
import 'package:git_touch/screens/login.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:github/github.dart';
import 'package:launch_review/launch_review.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:provider/provider.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:universal_io/io.dart';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
@ -37,15 +45,42 @@ class _HomeState extends State<Home> {
final GlobalKey<NavigatorState> tab4 = GlobalKey<NavigatorState>();
final GlobalKey<NavigatorState> tab5 = GlobalKey<NavigatorState>();
@override
initState() {
super.initState();
Future.delayed(const Duration(seconds: 5), () async {
final latest = await GitHub()
.repositories
.getLatestRelease(RepositorySlug.full('git-touch/git-touch'));
final current =
await PackageInfo.fromPlatform().then((value) => value.version);
if (Version.parse(latest.tagName!.substring(1))
.compareTo(Version.parse(current)) ==
1) {
final res = await context.read<ThemeModel>().showConfirm(context,
const Text('New version released. Would you like to download it?'));
if (res == true) {
if (Platform.isIOS) {
// go to app store
LaunchReview.launch(writeReview: false);
} else {
context.pushUrl(latest.htmlUrl!);
}
}
}
});
}
_buildScreen(int index) {
// print(Localizations.localeOf(context).toString());
// return GlProjectScreen(32221);
// return IssuesScreen('flutter', 'flutter', isPullRequest: true);
// return IssueScreen('reactjs', 'rfcs', 29);
// return IssueScreen('reactjs', 'rfcs', 68, isPullRequest: true);
// return GhIssuesScreen('flutter', 'flutter', isPullRequest: true);
// return GhIssueScreen('reactjs', 'rfcs', 29);
// return GhIssueScreen('reactjs', 'rfcs', 68);
// return Image.asset('images/spinner.webp', width: 32, height: 32);
// return GhRepoScreen('shreyas1599', 'test');
final auth = Provider.of<AuthModel>(context);
switch (auth.activeAccount.platform) {
switch (auth.activeAccount!.platform) {
case PlatformType.github:
switch (index) {
case 0:
@ -57,7 +92,7 @@ class _HomeState extends State<Home> {
case 3:
return GhSearchScreen();
case 4:
return GhUserScreen(null);
return const GhViewerScreen();
}
break;
case PlatformType.gitlab:
@ -69,7 +104,7 @@ class _HomeState extends State<Home> {
case 2:
return GlSearchScreen();
case 3:
return GlUserScreen(null);
return const GlUserScreen(null);
}
break;
case PlatformType.bitbucket:
@ -79,15 +114,15 @@ class _HomeState extends State<Home> {
case 1:
return BbTeamsScreen();
case 2:
return BbUserScreen(null);
return const BbUserScreen(null);
}
break;
case PlatformType.gitea:
switch (index) {
case 0:
return GtOrgsScreen();
return const GtOrgsScreen();
case 1:
return GtUserScreen(auth.activeAccount.login, isViewer: true);
return GtUserScreen(auth.activeAccount!.login, isViewer: true);
}
break;
case PlatformType.gitee:
@ -95,16 +130,21 @@ class _HomeState extends State<Home> {
case 0:
return GeSearchScreen();
case 1:
return GeUserScreen(auth.activeAccount.login, isViewer: true);
return GeUserScreen(auth.activeAccount!.login, isViewer: true);
}
break;
case PlatformType.gogs:
switch (index) {
case 0:
return GoSearchScreen();
case 1:
return GoUserScreen(auth.activeAccount!.login, isViewer: true);
}
}
}
Widget _buildNotificationIcon(BuildContext context, bool isActive) {
final theme = Provider.of<ThemeModel>(context);
final iconData = Icons.notifications;
int count = Provider.of<NotificationModel>(context).count;
Widget _buildNotificationIcon(BuildContext context, IconData iconData) {
final count = Provider.of<NotificationModel>(context).count;
if (count == 0) {
return Icon(iconData);
}
@ -114,10 +154,11 @@ class _HomeState extends State<Home> {
children: <Widget>[
Icon(iconData),
Positioned(
right: -2,
top: -2,
child: Icon(Octicons.primitive_dot,
color: theme.palette.primary, size: 14))
right: -2,
top: -2,
child: Icon(Octicons.dot_fill,
color: AntTheme.of(context).colorPrimary, size: 14),
)
],
);
}
@ -138,126 +179,103 @@ class _HomeState extends State<Home> {
return tab1;
}
List<BottomNavigationBarItem> _buildNavigationItems(String platform) {
final search = BottomNavigationBarItem(
icon: const Icon(Ionicons.search_outline),
activeIcon: const Icon(Ionicons.search),
label: AppLocalizations.of(context)!.search,
);
final group = BottomNavigationBarItem(
icon: const Icon(Ionicons.people_outline),
activeIcon: const Icon(Ionicons.people),
label: AppLocalizations.of(context)!.organizations,
);
final me = BottomNavigationBarItem(
icon: const Icon(Ionicons.person_outline),
activeIcon: const Icon(Ionicons.person),
label: AppLocalizations.of(context)!.me,
);
final explore = BottomNavigationBarItem(
icon: const Icon(Ionicons.compass_outline),
activeIcon: const Icon(Ionicons.compass),
label: AppLocalizations.of(context)!.explore,
);
switch (platform) {
case PlatformType.github:
return [
BottomNavigationBarItem(
icon: const Icon(Ionicons.newspaper_outline),
activeIcon: const Icon(Ionicons.newspaper),
label: AppLocalizations.of(context)!.news,
),
BottomNavigationBarItem(
icon:
_buildNotificationIcon(context, Ionicons.notifications_outline),
activeIcon: _buildNotificationIcon(context, Ionicons.notifications),
label: AppLocalizations.of(context)!.notification,
),
BottomNavigationBarItem(
icon: const Icon(Ionicons.flame_outline),
activeIcon: const Icon(Ionicons.flame),
label: AppLocalizations.of(context)!.trending,
),
search,
me,
];
case PlatformType.gitlab:
return [explore, group, search, me];
case PlatformType.bitbucket:
return [explore, group, me];
case PlatformType.gitea:
return [group, me];
case PlatformType.gitee:
case PlatformType.gogs:
return [search, me];
default:
return [];
}
}
@override
Widget build(BuildContext context) {
final theme = Provider.of<ThemeModel>(context);
final auth = Provider.of<AuthModel>(context);
if (auth.activeAccount == null) {
return LoginScreen();
}
List<BottomNavigationBarItem> navigationItems;
final navigationItems = _buildNavigationItems(auth.activeAccount!.platform);
switch (auth.activeAccount.platform) {
case PlatformType.github:
navigationItems = [
BottomNavigationBarItem(
icon: Icon(Icons.rss_feed), label: S.of(context).news),
BottomNavigationBarItem(
icon: _buildNotificationIcon(context, false),
activeIcon: _buildNotificationIcon(context, true),
label: S.of(context).notification),
BottomNavigationBarItem(
icon: Icon(Icons.whatshot), label: S.of(context).trending),
BottomNavigationBarItem(
icon: Icon(Icons.search), label: S.of(context).search),
BottomNavigationBarItem(
icon: Icon(Icons.person),
activeIcon: Icon(Icons.person),
label: S.of(context).me),
];
break;
case PlatformType.gitlab:
navigationItems = [
BottomNavigationBarItem(
icon: Icon(Icons.explore), label: S.of(context).explore),
BottomNavigationBarItem(
icon: Icon(Icons.group), label: S.of(context).groups),
BottomNavigationBarItem(
icon: Icon(Icons.search), label: S.of(context).search),
BottomNavigationBarItem(
icon: Icon(Icons.person), label: S.of(context).me),
];
break;
case PlatformType.bitbucket:
navigationItems = [
BottomNavigationBarItem(
icon: Icon(Icons.explore), label: S.of(context).explore),
BottomNavigationBarItem(
icon: Icon(Icons.group), label: S.of(context).teams),
BottomNavigationBarItem(
icon: Icon(Icons.person), label: S.of(context).me),
];
break;
case PlatformType.gitea:
navigationItems = [
BottomNavigationBarItem(
icon: Icon(Icons.group), label: S.of(context).organizations),
BottomNavigationBarItem(
icon: Icon(Icons.person), label: S.of(context).me),
];
break;
case PlatformType.gitee:
navigationItems = [
BottomNavigationBarItem(
icon: Icon(Icons.search), label: S.of(context).search),
BottomNavigationBarItem(
icon: Icon(Icons.person), label: S.of(context).me),
];
break;
}
switch (theme.theme) {
case AppThemeType.cupertino:
return WillPopScope(
onWillPop: () async {
return !await getNavigatorKey(auth.activeTab)
.currentState
?.maybePop();
},
child: CupertinoTabScaffold(
tabBuilder: (context, index) {
return CupertinoTabView(
navigatorKey: getNavigatorKey(index),
builder: (context) {
return _buildScreen(index);
},
);
return WillPopScope(
onWillPop: () async {
return !(await getNavigatorKey(auth.activeTab)
.currentState
?.maybePop())!;
},
child: CupertinoTabScaffold(
tabBuilder: (context, index) {
return CupertinoTabView(
navigatorKey: getNavigatorKey(index),
builder: (context) {
return _buildScreen(index);
},
tabBar: CupertinoTabBar(
items: navigationItems,
currentIndex: auth.activeTab,
onTap: (index) {
if (auth.activeTab == index) {
getNavigatorKey(index)
.currentState
?.popUntil((route) => route.isFirst);
} else {
auth.setActiveTab(index);
}
},
),
),
);
default:
return Scaffold(
body: IndexedStack(
index: auth.activeTab,
children: [
for (var i = 0; i < navigationItems.length; i++) _buildScreen(i)
],
),
bottomNavigationBar: BottomNavigationBar(
selectedItemColor: theme.palette.primary,
items: navigationItems,
currentIndex: auth.activeTab,
type: BottomNavigationBarType.fixed,
onTap: (int index) {
);
},
tabBar: CupertinoTabBar(
items: navigationItems,
currentIndex: auth.activeTab,
onTap: (index) {
if (auth.activeTab == index) {
getNavigatorKey(index)
.currentState
?.popUntil((route) => route.isFirst);
} else {
auth.setActiveTab(index);
},
),
);
}
}
},
),
),
);
}
}

334
lib/l10n/intl_ca.arb Normal file
View File

@ -0,0 +1,334 @@
{
"somethingBadHappens": "Ha ocorregut un problema:",
"@somethingBadHappens": {
"description": "error message"
},
"following": "Seguint",
"@following": {
"description": "people followed by a person"
},
"fontStyle": "ESTIL DE LLETRA",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Mida de la lletra",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Lletra tipogràfica",
"@fontFamily": {
"description": "Font Family"
},
"notFoundMessage": "No sha trobat",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "El GitTouch necessita aquests permisos",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Compte del GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"removeAccount": "Suprimeix el compte",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Selecció del compte",
"@selectAccount": {
"description": "select account message"
},
"activity": "Activitat",
"@activity": {
"description": "activity"
},
"forks": "Bifurcacions",
"@forks": {
"description": "forks"
},
"codeTheme": "Tema per al codi",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"notFoundTextDisplay": "Encara no sha implementat aquesta pàgina.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"dark": "Fosc",
"@dark": {
"description": "dark mode"
},
"light": "Clar",
"@light": {
"description": "light mode"
},
"about": "quant a",
"@about": {
"description": "about section"
},
"email": "Adreça electrònica",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Valoreu aquesta aplicació",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Envia un informe",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "comentaris",
"@feedback": {
"description": "provide feedback"
},
"issues": "Informes",
"@issues": {
"description": "issues"
},
"projects": "Projectes",
"@projects": {
"description": "projects"
},
"repositoryActions": "Accions del dipòsit",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Dipòsit",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Codi font",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versió",
"@version": {
"description": "app version"
},
"all": "Tot",
"@all": {
"description": "all"
},
"unread": "Sense llegir",
"@unread": {
"description": "unread"
},
"contributors": "Contribuïdors",
"@contributors": {
"description": "contributors"
},
"branches": "Branques",
"@branches": {
"description": "branches"
},
"developers": "Desenvolupadors",
"@developers": {
"description": "developers"
},
"files": "Fitxers",
"@files": {
"description": "file plural"
},
"file": "Fitxer",
"@file": {
"description": "file"
},
"teams": "Equips",
"@teams": {
"description": "teams"
},
"groups": "Grups",
"@groups": {
"description": "groups"
},
"actions": "Accions",
"@actions": {
"description": "actions"
},
"project": "Projecte",
"@project": {
"description": "project"
},
"bitbucketAccount": "Compte del Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Compte del GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"giteeAccount": "Compte del Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Compte del Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"issue": "Informe",
"@issue": {
"description": "issue"
},
"group": "Grup",
"@group": {
"description": "group"
},
"user": "Usuari",
"@user": {
"description": "user"
},
"projectActions": "Accions del projecte",
"@projectActions": {
"description": "Project Actions"
},
"code": "Codi",
"@code": {
"description": "Code"
},
"brightness": "Brillantor",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Canvia de compte",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Estat del Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Estat del GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"githubStatus": "Estat del GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "sistema",
"@system": {
"description": "system"
},
"settings": "Paràmetres",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "dipòsits ancorats",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "dipòsits populars",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Membres",
"@members": {
"description": "members of an organization"
},
"organizations": "Organitzacions",
"@organizations": {
"description": "organizations for a user"
},
"events": "Esdeveniments",
"@events": {
"description": "events for a user"
},
"followers": "Seguidors",
"@followers": {
"description": "followers for a person"
},
"stars": "Estrelles",
"@stars": {
"description": "stars on a repo"
},
"follow": "Segueix",
"@follow": {
"description": "follow someone"
},
"unfollow": "Deixa de seguir",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Dipòsits",
"@repositories": {
"description": "repository text"
},
"participating": "Participacions",
"@participating": {
"description": "The participating Tab"
},
"me": "Jo",
"@me": {
"description": "The Me tab"
},
"search": "Cerca",
"@search": {
"description": "The Search tab"
},
"trending": "En tendència",
"@trending": {
"description": "Trending"
},
"notification": "Notificació",
"@notification": {
"description": "The Notification tab"
},
"news": "Notícies",
"@news": {
"description": "The News tab"
},
"markdownRenderEngine": "Motor de processament del Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"scaffoldTheme": "Tema de lentorn",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"followSystem": "Segueix el sistema",
"@followSystem": {
"description": "follow systems setting"
},
"syntaxHighlighting": "REALÇAMENT DE LA SINTAXI",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"explore": "Explora",
"@explore": {
"description": "explore"
},
"pullRequests": "Peticions dextracció",
"@pullRequests": {
"description": "Pull Requests"
},
"watchers": "Vigilants",
"@watchers": {
"description": "watchers"
},
"reviewPermissions": "Revisa els permissos",
"@reviewPermissions": {
"description": "review Permissions"
},
"mergeRequests": "Peticions de fusió",
"@mergeRequests": {
"description": "Merge request"
}
}

350
lib/l10n/intl_de.arb Normal file
View File

@ -0,0 +1,350 @@
{
"followers": "Follower",
"@followers": {
"description": "followers for a person"
},
"me": "Konto",
"@me": {
"description": "The Me tab"
},
"trending": "Beliebt",
"@trending": {
"description": "Trending"
},
"fontStyle": "Schriftstyle",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Schriftgröße",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Schriftart",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "SYNTAX HERVORHEBUNG",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "Projekt Aktionen",
"@projectActions": {
"description": "Project Actions"
},
"code": "Code",
"@code": {
"description": "Code"
},
"issue": "Ticket",
"@issue": {
"description": "issue"
},
"group": "Gruppe",
"@group": {
"description": "group"
},
"user": "Benutzer",
"@user": {
"description": "user"
},
"longPressToRemoveAccount": "Langer Druck zum Entfernen des Kontos",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"giteeAccount": "Gitee Konto",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Gitea Konto",
"@giteaAccount": {
"description": "Gitea Account"
},
"githubAccount": "GitHub Konto",
"@githubAccount": {
"description": "Gitea Account"
},
"gitlabAccount": "GitLab Konto",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"bitbucketAccount": "Bitbucket Konto",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"notFoundTextDisplay": "Ups, diese Seite ist noch nicht eingebaut.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "Nicht gefunden",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch benötigt diese Berechtigungen",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"somethingBadHappens": "Etwas schlechtes ist passiert:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Konto löschen",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Konto auswählen",
"@selectAccount": {
"description": "select account message"
},
"project": "Projekt",
"@project": {
"description": "project"
},
"activity": "Aktivität",
"@activity": {
"description": "activity"
},
"mergeRequests": "Merge Requests",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Gruppen",
"@groups": {
"description": "groups"
},
"actions": "Aktionen",
"@actions": {
"description": "actions"
},
"files": "Dateien",
"@files": {
"description": "file plural"
},
"file": "Datei",
"@file": {
"description": "file"
},
"teams": "Teams",
"@teams": {
"description": "teams"
},
"explore": "Erkunden",
"@explore": {
"description": "explore"
},
"developers": "Entwickler",
"@developers": {
"description": "developers"
},
"all": "Alle",
"@all": {
"description": "all"
},
"unread": "Ungelesen",
"@unread": {
"description": "unread"
},
"contributors": "Mitwirkende",
"@contributors": {
"description": "contributors"
},
"branches": "Branches",
"@branches": {
"description": "branches"
},
"commits": "Commits",
"@commits": {
"description": "Commits"
},
"pullRequests": "Pull Requests",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Tickets",
"@issues": {
"description": "issues"
},
"forks": "Forks",
"@forks": {
"description": "forks"
},
"watchers": "Beobachter",
"@watchers": {
"description": "watchers"
},
"releases": "Releases",
"@releases": {
"description": "releases"
},
"projects": "Projekte",
"@projects": {
"description": "projects"
},
"repositoryActions": "Repository Aktionen",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repository",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Quellcode",
"@sourceCode": {
"description": "source code for app"
},
"version": "Version",
"@version": {
"description": "app version"
},
"about": "Informationen",
"@about": {
"description": "about section"
},
"email": "E-Mail",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "App bewerten",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Fehler melden",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "Feedback",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Markdown Rendering-Engine",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Code Design",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Menü Design",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Dunkel",
"@dark": {
"description": "dark mode"
},
"light": "Hell",
"@light": {
"description": "light mode"
},
"brightness": "Helligkeit",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Konten wechseln",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Gitea-Status",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab-Status",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Berechtigungen überprüfen",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "GitHub-Status",
"@githubStatus": {
"description": "github status"
},
"system": "System",
"@system": {
"description": "system"
},
"settings": "Einstellungen",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "angeheftete Repositories",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "beliebte Repositories",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Mitglieder",
"@members": {
"description": "members of an organization"
},
"organizations": "Organisationen",
"@organizations": {
"description": "organizations for a user"
},
"repositories": "Repositories",
"@repositories": {
"description": "repository text"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "Events",
"@events": {
"description": "events for a user"
},
"following": "folgen",
"@following": {
"description": "people followed by a person"
},
"stars": "markieren",
"@stars": {
"description": "stars on a repo"
},
"follow": "folgen",
"@follow": {
"description": "follow someone"
},
"unfollow": "entfolgen",
"@unfollow": {
"description": "unfollow someone"
},
"participating": "Teilnehmer",
"@participating": {
"description": "The participating Tab"
},
"search": "Suchen",
"@search": {
"description": "The Search tab"
},
"notification": "Benachrichtigung",
"@notification": {
"description": "The Notification tab"
},
"news": "Neuigkeiten",
"@news": {
"description": "The News tab"
},
"followSystem": "System folgen",
"@followSystem": {
"description": "follow systems setting"
}
}

View File

@ -1,8 +1,4 @@
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "The conventional newborn programmer greeting"
},
"news": "News",
"@news": {
"description": "The News tab"
@ -67,11 +63,11 @@
"@members": {
"description": "members of an organization"
},
"popularRepositories": "popular repositories",
"popularRepositories": "Popular Repositories",
"@popularRepositories": {
"description": "popular repositories"
},
"pinnedRepositories": "pinned repositories",
"pinnedRepositories": "Pinned Repositories",
"@pinnedRepositories": {
"description": "pinned repositories"
},
@ -79,11 +75,11 @@
"@settings": {
"description": "settings"
},
"system": "system",
"system": "System",
"@system": {
"description": "system"
},
"githubStatus": "GitHub status",
"githubStatus": "GitHub Status",
"@githubStatus": {
"description": "github status"
},
@ -91,15 +87,15 @@
"@reviewPermissions": {
"description": "review Permissions"
},
"gitlabStatus": "GitLab status",
"gitlabStatus": "GitLab Status",
"@gitlabStatus": {
"description": "GitLab status"
},
"giteaStatus": "Gitea status",
"giteaStatus": "Gitea Status",
"@giteaStatus": {
"description": "Gitea status"
},
"switchAccounts": "Switch accounts",
"switchAccounts": "Switch Accounts",
"@switchAccounts": {
"description": "Switch accounts"
},
@ -119,18 +115,6 @@
"@dark": {
"description": "dark mode"
},
"scaffoldTheme": "Scaffold Theme",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"codeTheme": "Code Theme",
"@codeTheme": {
"description": "code theme"
@ -151,10 +135,14 @@
"@feedback": {
"description": "provide feedback"
},
"submitAnIssue": "Submit an issue",
"submitAnIssue": "Submit An Issue",
"@submitAnIssue": {
"description": "submit issue for app"
},
"submit": "Submit",
"@submit": {
"description": "submit button text"
},
"rateThisApp": "Rate This App",
"@rateThisApp": {
"description": "rate the app"
@ -163,7 +151,7 @@
"@email": {
"description": "Email to report issues"
},
"about": "about",
"about": "About",
"@about": {
"description": "about section"
},
@ -191,6 +179,10 @@
"@releases": {
"description": "releases"
},
"released": "released",
"@released": {
"description": "released"
},
"watchers": "Watchers",
"@watchers": {
"description": "watchers"
@ -203,7 +195,7 @@
"@issues": {
"description": "issues"
},
"pullRequests": "Pull requests",
"pullRequests": "Pull Requests",
"@pullRequests": {
"description": "Pull Requests"
},
@ -211,6 +203,10 @@
"@commits": {
"description": "Commits"
},
"commit": "Commit",
"@commit": {
"description": "Commit"
},
"branches": "Branches",
"@branches": {
"description": "branches"
@ -267,15 +263,15 @@
"@project": {
"description": "project"
},
"selectAccount": "Select account",
"selectAccount": "Select Account",
"@selectAccount": {
"description": "select account message"
},
"removeAccount": "Remove account",
"removeAccount": "Remove Account",
"@removeAccount": {
"description": "remove account"
},
"somethingBadHappens": "Something bad happens:",
"somethingBadHappens": "Something Bad Happens:",
"@somethingBadHappens": {
"description": "error message"
},
@ -291,7 +287,7 @@
"@notFoundMessage": {
"description": "Not found page header"
},
"notFoundTextDisplay": "Woops, This page is not implemented yet",
"notFoundTextDisplay": "Oops, this page is not implemented yet.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
@ -307,7 +303,7 @@
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"giteaAccount": "Gitee Account",
"giteaAccount": "Gitea Account",
"@giteaAccount": {
"description": "Gitea Account"
},
@ -350,5 +346,507 @@
"fontStyle": "FONT STYLE",
"@fontStyle": {
"description": "font style"
},
"appLanguage": "App Language",
"@appLanguage": {
"description": "The app's language"
},
"reloadMessage": "The app will reload to make the language setting take effect",
"@reloadMessage": {
"description": "Reload message"
},
"theme": "Theme",
"@theme": {
"description": "Theme header text"
},
"title": "Title",
"@title": {
"description": "title"
},
"body": "Body",
"@body": {
"description": "body"
},
"timelineTypeNotImplemented": "Type not implemented yet",
"@timelineTypeNotImplemented": {
"description": "Timeline type not implemented"
},
"pullRequestCommitMessage": "added commit {commit}",
"@pullRequestCommitMessage": {
"description": "pull request commit message",
"placeholders": {
"commit": {
"type": "String"
}
}
},
"crossReferencedEventMessage": "references this on",
"@crossReferencedEventMessage": {
"description": "cross referenced event"
},
"closedEventMessage": "closed this",
"@closedEventMessage": {
"description": "closed event"
},
"reopenedEventMessage": "reopened this",
"@reopenedEventMessage": {
"description": "reopened event"
},
"subscribedEventMessage": "subscribed to this issue",
"@subscribedEventMessage": {
"description": "subscribed event"
},
"unsubscribedEventMessage": "unsubscribed from this issue",
"@unsubscribedEventMessage": {
"description": "unsubscribed event"
},
"referencedEventMessage": "referenced this pull request from commit {commit} from {repoName}",
"@referencedEventMessage": {
"description": "referenced event",
"placeholders": {
"commit": {
"type": "String"
},
"repoName": {
"type": "String"
}
}
},
"assignedEventMessage": "assigned this to",
"@assignedEventMessage": {
"description": "assigned event"
},
"unassignedEventMessage": "unassigned this from",
"@unassignedEventMessage": {
"description": "unassigned event"
},
"added": "added",
"@added": {
"description": "added"
},
"removed": "removed",
"@removed": {
"description": "removed"
},
"label": "label",
"@label": {
"description": "label"
},
"milestonedEventMessage": "added this to {milestone} milestone",
"@milestonedEventMessage": {
"description": "milestone event",
"placeholders": {
"milestone": {
"type": "String"
}
}
},
"demilestonedEventMessage": "removed this from {milestone} milestone",
"@demilestonedEventMessage": {
"description": "demilestoned event",
"placeholders": {
"milestone": {
"type": "String"
}
}
},
"renamedTitleEventMessage": "changed the title to {title} from",
"@renamedTitleEventMessage": {
"description": "changed title event",
"placeholders": {
"title": {
"type": "String"
}
}
},
"lockedConversationEventMessage": "locked this conversation",
"@lockedConversationEventMessage": {
"description": "locked this conversation"
},
"unlockedConversationEventMessage": "unlocked this conversation",
"@unlockedConversationEventMessage": {
"description": "unlocked this conversation"
},
"transferredEventMessage": "transferred this issue from {repoName}",
"@transferredEventMessage": {
"description": "transferred event",
"placeholders": {
"repoName": {
"type": "String"
}
}
},
"approvedChanges": "approved these changes",
"@approvedChanges": {
"description": "approved these changes"
},
"reviewed": "reviewed",
"@reviewed": {
"description": "reviewed"
},
"mergedEventMessage": "merged commit {commit} into {mergeRefName}",
"@mergedEventMessage": {
"description": "merged event message",
"placeholders": {
"commit": {
"type": "String"
},
"mergeRefName": {
"type": "String"
}
}
},
"mentionedEventMessage": "was mentioned",
"@mentionedEventMessage": {
"description": "was mentioned"
},
"pinnedEventMessage": "pinned this issue",
"@pinnedEventMessage": {
"description": "pinned this issue"
},
"deployedPR": "deployed the pull request {headRefName}",
"@deployedPR": {
"description": "deployed the pull request",
"placeholders": {
"headRefName": {
"type": "String"
}
}
},
"deploymentEnvironmentChangedEventMessage": "changed the development environment to {devEnv}",
"@deploymentEnvironmentChangedEventMessage": {
"description": "deployment environment changed event",
"placeholders": {
"devEnv": {
"type": "String"
}
}
},
"headRefDeletedEventMessage": "deleted the {headRefName} branch",
"@headRefDeletedEventMessage": {
"description": "head ref deleted event",
"placeholders": {
"headRefName": {
"type": "String"
}
}
},
"headRefRestoredEventMessage": "restored the {headRefName} branch",
"@headRefRestoredEventMessage": {
"description": "head ref restored event",
"placeholders": {
"headRefName": {
"type": "String"
}
}
},
"headRefForcedPushedEventFirstMessage": "force-pushed the",
"@headRefForcedPushedEventFirstMessage": {
"description": "head ref forced pushed event message first half"
},
"headRefForcedPushedEventSecondMessage": "branch from",
"@headRefForcedPushedEventSecondMessage": {
"description": "head ref forced pushed event message second half"
},
"reviewRequestEventMessage": "requested a review from",
"@reviewRequestEventMessage": {
"description": "requested a review from"
},
"fromReviewRequest": "from the review request",
"@fromReviewRequest": {
"description": "from the review request"
},
"reviewDismissedEventMessage": "dismissed the pull request review requested by",
"@reviewDismissedEventMessage": {
"description": "dismissed the pull request review requested by"
},
"nCommitsTo": "{count,plural, =1{{count} commit to} other{{count} commits to}}",
"@nCommitsTo": {
"description": "no. of commits to a branch",
"placeholders": {
"count": {
"type": "String"
}
}
},
"checkRunEventMessage": "{action} a check run for {name}",
"@checkRunEventMessage": {
"description": "check run event",
"placeholders": {
"action": {
"type": "String"
},
"name": {
"type": "String"
}
}
},
"checkSuiteEventConclusionMessage": "it is a {conclusion}",
"@checkSuiteEventConclusionMessage": {
"description": "check suite event conclusion",
"placeholders": {
"conclusion": {
"type": "String"
}
}
},
"actionRequiredConclusion": "it requires more action",
"@actionRequiredConclusion": {
"description": "it requires more action"
},
"checkSuiteEventMessage": "{action} the check suite and the conclusion is that",
"@checkSuiteEventMessage": {
"description": "check suite event message conclusion",
"placeholders": {
"action": {
"type": "String"
}
}
},
"commitCommentEventMessage": "commented on a commit at",
"@commitCommentEventMessage": {
"description": "commit comment event message"
},
"contentReferenceEventMessage": "{action} a content reference at",
"@contentReferenceEventMessage": {
"description": "content reference event",
"placeholders": {
"action": {
"type": "String"
}
}
},
"createdEventMessage": "created a {refType} {ref} at",
"@createdEventMessage": {
"description": "created event message",
"placeholders": {
"refType": {
"type": "String"
},
"ref": {
"type": "String"
}
}
},
"deletedEventMessage": "deleted the {refType} {ref} at",
"@deletedEventMessage": {
"description": "deleted event message",
"placeholders": {
"refType": {
"type": "String"
},
"ref": {
"type": "String"
}
}
},
"forked": "forked",
"@forked": {
"description": "forked"
},
"createdPages": "created the pages: {pageNames}",
"@createdPages": {
"description": "created pages",
"placeholders": {
"pageNames": {
"type": "String"
}
}
},
"editedPages": "edited the pages: {pageNames}",
"@editedPages": {
"description": "edited pages",
"placeholders": {
"pageAction": {
"type": "String"
}
}
},
"newPermissionsAccepted": "new permissions were accepted for action ",
"@newPermissionsAccepted": {
"description": "new permissions were accepted for"
},
"forGithubAppWithId": "for the Github App with id {id}",
"@forGithubAppWithId": {
"description": "for the Github App with id",
"placeholders": {
"id": {
"type": "String"
}
}
},
"wereAddedTo": "{repos} were added to the installation id {id}",
"@wereAddedTo": {
"description": "example: repo1,repo2 were added to the installation id ID",
"placeholders": {
"repos": {
"type": "String"
},
"id": {
"type": "String"
}
}
},
"wereRemovedFrom": "{repos} were removed from the installation id {id}",
"@wereRemovedFrom": {
"description": "example: repo1,repo2 were removed from the installation id ID",
"placeholders": {
"repos": {
"type": "String"
},
"id": {
"type": "String"
}
}
},
"commentedOn": "commented on",
"@commentedOn": {
"description": "commented on"
},
"at": "at",
"@at": {
"description": "at"
},
"to": "to",
"@to": {
"description": "to"
},
"from": "from",
"@from": {
"description": "from"
},
"purchasedMarketplacePlan": "purchased a Marketplace Plan",
"@purchasedMarketplacePlan": {
"description": "purchased a Marketplace Plan"
},
"cancelledMarketplacePlan": "cancelled their Marketplace Plan",
"@cancelledMarketplacePlan": {
"description": "cancelled their Marketplace Plan"
},
"pendingMarketplacePlan": "Marketplace Plan is pending change",
"@pendingMarketplacePlan": {
"description": "Marketplace Plan is pending change"
},
"pendingChangeCancelled": "Pending Marketplace Plan was cancelled",
"@pendingChangeCancelled": {
"description": "Pending Marketplace Plan was cancelled"
},
"changedMarketplacePlan": "changed their Marketplace Plan",
"@changedMarketplacePlan": {
"description": "changed their Marketplace Plan"
},
"was": "was",
"@was": {
"description": "was"
},
"convertProjectCard": "converted the project card into an issue",
"@convertProjectCard": {
"description": "converted the project card into an issue"
},
"theProjectCard": "the project card",
"@theProjectCard": {
"description": "the project card"
},
"projectColumnEventMessage": "{action} the project column {projectColumnName} at ",
"@projectColumnEventMessage": {
"description": "the project column",
"placeholders": {
"action": {
"type": "String"
},
"projectColumnName": {
"type": "String"
}
}
},
"projectEventMessage": "{action} the project {projectName}",
"@projectEventMessage": {
"description": "the project",
"placeholders": {
"action" : {
"type": "String"
},
"projectName": {
"type": "String"
}
}
},
"made": "made",
"@made": {
"description": "made"
},
"public": "public",
"@public": {
"description": "public"
},
"pullRequestEventMessage": "{action} pull request",
"@pullRequestEventMessage": {
"description": "pull request event",
"placeholders": {
"action": {
"type": "String"
}
}
},
"pullRequestReviewEventMessage": "{action} the pull request review",
"@pullRequestReviewEventMessage": {
"description": "pull request review event message",
"placeholders": {
"action": {
"type": "String"
}
}
},
"pullRequestReviewCommentEventMessage": "reviewed pull request",
"@pullRequestReviewCommentEventMessage": {
"description": "pull request review comment event"
},
"pushedTo": "pushed to",
"@pushedTo": {
"description": "pushed to"
},
"securityAlertInvolvingPackage": "Security alert involving the package {affectedPackageName} between versions {affectedRange} was {action}ed",
"@securityAlertInvolvingPackage": {
"description": "Security alert involving package",
"placeholders": {
"affectedPackageName": {
"type": "String"
},
"affectedRange": {
"type": "String"
},
"action": {
"type": "String"
}
}
},
"securityAdvisory": "Security advisory regarding {summary} was {action}",
"@securityAdvisory": {
"description": "Security advisory",
"placeholders": {
"summary": {
"type": "String"
},
"action": {
"type": "String"
}
}
},
"starred": "starred",
"@starred": {
"description": "starred"
},
"filesChanged": "{count,plural, =1{{count} file changed} other{{count} files changed}}",
"@filesChanged": {
"description": "no. of files changed",
"placeholders": {
"count": {
"type": "String"
}
}
},
"blankDiff": "No text to be shown here",
"@blankDiff": {
"description": "text to show for a blank diff"
}
}
}

350
lib/l10n/intl_es.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontFamily": "Familia tipográfica",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "COLORACIÓN SINTÁCTICA",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"somethingBadHappens": "Algo malo sucede:",
"@somethingBadHappens": {
"description": "error message"
},
"issues": "Informes",
"@issues": {
"description": "issues"
},
"watchers": "Observadores",
"@watchers": {
"description": "watchers"
},
"releases": "Lanzamientos",
"@releases": {
"description": "releases"
},
"codeTheme": "Tema de código",
"@codeTheme": {
"description": "code theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Tema de andamiaje",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"fontStyle": "ESTILO DE LETRA",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Tamaño de letra",
"@fontSize": {
"description": "font size"
},
"projectActions": "Acciones del proyecto",
"@projectActions": {
"description": "Project Actions"
},
"code": "Código",
"@code": {
"description": "Code"
},
"issue": "Informe",
"@issue": {
"description": "issue"
},
"group": "Grupo",
"@group": {
"description": "group"
},
"user": "Usuario",
"@user": {
"description": "user"
},
"giteeAccount": "Cuenta de Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Cuenta de Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Pulsación larga para eliminar la cuenta",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Cuenta de Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Cuenta de GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Esta página aún no está implementada.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "No encontrado",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch necesita estos permisos",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Cuenta de GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"removeAccount": "Eliminar cuenta",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Seleccione una cuenta",
"@selectAccount": {
"description": "select account message"
},
"project": "Proyecto",
"@project": {
"description": "project"
},
"activity": "Actividad",
"@activity": {
"description": "activity"
},
"mergeRequests": "Solicitudes de incorporación",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Grupos",
"@groups": {
"description": "groups"
},
"actions": "Acciones",
"@actions": {
"description": "actions"
},
"files": "Archivos",
"@files": {
"description": "file plural"
},
"file": "Archivo",
"@file": {
"description": "file"
},
"teams": "Equipos",
"@teams": {
"description": "teams"
},
"explore": "Explorar",
"@explore": {
"description": "explore"
},
"developers": "Desarrolladores",
"@developers": {
"description": "developers"
},
"all": "Todos",
"@all": {
"description": "all"
},
"unread": "No leídos",
"@unread": {
"description": "unread"
},
"contributors": "Contribuidores",
"@contributors": {
"description": "contributors"
},
"branches": "Ramas",
"@branches": {
"description": "branches"
},
"commits": "Consignas",
"@commits": {
"description": "Commits"
},
"pullRequests": "Solicitudes de incorporación",
"@pullRequests": {
"description": "Pull Requests"
},
"forks": "Bifurcaciones",
"@forks": {
"description": "forks"
},
"projects": "Proyectos",
"@projects": {
"description": "projects"
},
"repositoryActions": "Acciones del repositorio",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repositorio",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Código fuente",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versión",
"@version": {
"description": "app version"
},
"about": "acerca de",
"@about": {
"description": "about section"
},
"email": "Correo electrónico",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Valorar esta aplicación",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Informar de un problema",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "comentarios",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Motor de representación de Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"dark": "Oscuro",
"@dark": {
"description": "dark mode"
},
"light": "Claro",
"@light": {
"description": "light mode"
},
"followSystem": "Seguir el sistema",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Brillo",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Cambiar de cuenta",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Estado de Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Estado de Gitlab",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Revisar los permisos",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "Estado de Github",
"@githubStatus": {
"description": "github status"
},
"system": "sistema",
"@system": {
"description": "system"
},
"settings": "Configuración",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "repositorios anclados",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "repositorios populares",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Miembros",
"@members": {
"description": "members of an organization"
},
"organizations": "Organizaciones",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "Eventos",
"@events": {
"description": "events for a user"
},
"following": "Siguiendo",
"@following": {
"description": "people followed by a person"
},
"followers": "Seguidores",
"@followers": {
"description": "followers for a person"
},
"stars": "Estrellas",
"@stars": {
"description": "stars on a repo"
},
"follow": "Seguir",
"@follow": {
"description": "follow someone"
},
"unfollow": "Dejar de seguir",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Repositorios",
"@repositories": {
"description": "repository text"
},
"participating": "Participación",
"@participating": {
"description": "The participating Tab"
},
"me": "Yo",
"@me": {
"description": "The Me tab"
},
"search": "Buscar",
"@search": {
"description": "The Search tab"
},
"trending": "Tendencias",
"@trending": {
"description": "Trending"
},
"notification": "Notificación",
"@notification": {
"description": "The Notification tab"
},
"news": "Noticias",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_fr.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "STYLE DE LA POLICE",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Taille de la police",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Famille de polices",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "MISE EN ÉVIDENCE DE LA SYNTAXE",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "Actions du projet",
"@projectActions": {
"description": "Project Actions"
},
"code": "Code",
"@code": {
"description": "Code"
},
"issue": "Problème",
"@issue": {
"description": "issue"
},
"group": "Groupe",
"@group": {
"description": "group"
},
"user": "Utilisateur",
"@user": {
"description": "user"
},
"giteeAccount": "Compte Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Compte Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Longue pression pour supprimer un compte",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Compte Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Compte GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Oups, cette page n'est pas encore implémentée.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "Non trouvé",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch a besoin de ces autorisations",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Compte GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Quelque chose de mal se passe :",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Supprimer le compte",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Sélectionner un compte",
"@selectAccount": {
"description": "select account message"
},
"project": "Projet",
"@project": {
"description": "project"
},
"activity": "Activité",
"@activity": {
"description": "activity"
},
"mergeRequests": "Fusionner les demandes",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Groupes",
"@groups": {
"description": "groups"
},
"actions": "Actions",
"@actions": {
"description": "actions"
},
"files": "Fichiers",
"@files": {
"description": "file plural"
},
"file": "Dossier",
"@file": {
"description": "file"
},
"teams": "Équipes",
"@teams": {
"description": "teams"
},
"explore": "Explorez",
"@explore": {
"description": "explore"
},
"developers": "Développeurs",
"@developers": {
"description": "developers"
},
"all": "Tous",
"@all": {
"description": "all"
},
"unread": "Non lu",
"@unread": {
"description": "unread"
},
"contributors": "Contributeurs",
"@contributors": {
"description": "contributors"
},
"branches": "Branches",
"@branches": {
"description": "branches"
},
"commits": "Engage",
"@commits": {
"description": "Commits"
},
"pullRequests": "Demandes de retrait",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Problèmes",
"@issues": {
"description": "issues"
},
"forks": "Duplications",
"@forks": {
"description": "forks"
},
"watchers": "Observateurs",
"@watchers": {
"description": "watchers"
},
"releases": "Versions finales",
"@releases": {
"description": "releases"
},
"projects": "Projets",
"@projects": {
"description": "projects"
},
"repositoryActions": "Actions de dépôt",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Dépôt",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Code source",
"@sourceCode": {
"description": "source code for app"
},
"version": "Version",
"@version": {
"description": "app version"
},
"about": "à propos de",
"@about": {
"description": "about section"
},
"email": "Courriel",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Evaluez cette application",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Soumettre une question",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "retour d'information",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Moteur de rendu Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Thème du code",
"@codeTheme": {
"description": "code theme"
},
"material": "Matériel",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Thème de l'échafaudage",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Foncé",
"@dark": {
"description": "dark mode"
},
"light": "Clair",
"@light": {
"description": "light mode"
},
"followSystem": "Suivre le système",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Luminosité",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Changer de compte",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Statut de Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Statut du GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Examiner les autorisations",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "Statut de GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "système",
"@system": {
"description": "system"
},
"settings": "Paramètres",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "dépôts épinglés",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "les dépôts populaires",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Membres",
"@members": {
"description": "members of an organization"
},
"organizations": "Organisations",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "Événements",
"@events": {
"description": "events for a user"
},
"following": "Suivant",
"@following": {
"description": "people followed by a person"
},
"followers": "Suivants",
"@followers": {
"description": "followers for a person"
},
"stars": "Étoiles",
"@stars": {
"description": "stars on a repo"
},
"follow": "Suivre",
"@follow": {
"description": "follow someone"
},
"unfollow": "Ne plus suivre",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Dépôts",
"@repositories": {
"description": "repository text"
},
"participating": "Participer",
"@participating": {
"description": "The participating Tab"
},
"me": "Moi",
"@me": {
"description": "The Me tab"
},
"search": "Recherchez",
"@search": {
"description": "The Search tab"
},
"trending": "Tendance",
"@trending": {
"description": "Trending"
},
"notification": "Notification",
"@notification": {
"description": "The Notification tab"
},
"news": "Nouvelles",
"@news": {
"description": "The News tab"
}
}

View File

@ -1,91 +1,178 @@
{
"helloWorld": "नमस्ते दुनिया",
"news": "समाचार",
"@news": {},
"notification": "अधिसूचना",
"@notification": {},
"trending": "ट्रेंडिंग",
"@trending": {},
"search": "खोज",
"@search": {},
"me": "मैं",
"@me": {},
"participating": "भाग लेने वाले",
"@participating": {},
"repositories": "रेपोसिटोरिएस",
"@repositories": {},
"unfollow": "अनफ़ॉलो",
"@unfollow": {},
"follow": "फ़ोल्लोव",
"@follow": {},
"stars": "स्टार्स",
"@stars": {},
"followers": "अनुयायियों",
"@followers": {},
"following": "फोल्लोविंग",
"@following": {},
"events": "इवेंट्स",
"@events": {},
"gists": "गिस्ट्स",
"@gists": {},
"organizations": "संगठन",
"@organizations": {},
"members": "संगठन",
"@members": {},
"popularRepositories": "प्रसिद्ध रेपोसिटोरिएस",
"@popularRepositories": {},
"pinnedRepositories": "पिन्नेद रेपोसिटोरिएस",
"@pinnedRepositories": {},
"settings": "सेटिंग्स",
"@settings": {},
"system": "सिस्टम",
"@system": {},
"githubStatus": "गिटहब स्टेटस",
"@githubStatus": {},
"reviewPermissions": "अनुमति की समीक्षा करें",
"@reviewPermissions": {},
"gitlabStatus": "गितलब स्टेटस",
"@gitlabStatus": {},
"giteaStatus": "गीते स्टेटस",
"@giteaStatus": {},
"switchAccounts": "खाते बदलें",
"@switchAccounts": {},
"brightness": "द्य्रुति",
"@brightness": {},
"followSystem": "सिस्टम का पालन करें",
"@followSystem": {},
"light": "प्रकाश मोड",
"@light": {},
"dark": "अंधेरा मोड",
"@dark": {},
"scaffoldTheme": "स्कैफफोल्ड थीम",
"@scaffoldTheme": {},
"cupertino": "क्यूपर्टिनो थीम",
"@cupertino": {},
"material": "मटेरियल थीम",
"@material": {},
"codeTheme": "कोड थीम",
"@codeTheme": {},
"markdownRenderEngine": "मार्कडौं रेंडर इंजन",
"@markdownRenderEngine": {},
"flutter": "फ्लटर",
"@flutter": {},
"webview": "वेब्वयेव",
"@webview": {},
"feedback": "फीडबैक",
"@feedback": {},
"submitAnIssue": "एक मुद्दा प्रस्तुत करें",
"@submitAnIssue": {},
"rateThisApp": "इस ऐप्लिकेशन को रेट करे",
"@rateThisApp": {},
"email": "ईमेल",
"@email": {},
"about": "एप्लिकेशन के बारे में",
"@about": {},
"version": "एप्लिकेशन वेरीज़न",
"@version": {},
"sourceCode": "एप्लिकेशन स्रोत कोड",
"@sourceCode": {},
"ignoringWatchState": "अनदेखी",
"@ignoringWatchState": {},
"repository": "रिपॉजिटरी",
"@repository": {},
"repositoryActions": "रिपॉजिटरी कार्रवाई",
"@repositoryActions": {},
"projects": "परियोजनाओं",
"@projects": {},
"releases": "रेलसेस",
"@releases": {},
"watchers": "नजर रखने वालों",
"@watchers": {},
"forks": "फोर्क्स",
"@forks": {},
"issues": "मुद्दे",
"@issues": {},
"pullRequests": "पुल्ल रिक्वेस्ट्स",
"@pullRequests": {},
"commits": "कमिटस",
"@commits": {},
"branches": "ब्रांच",
"@branches": {},
"contributors": "योगदानकर्ताओं",
"@contributors": {},
"unread": "अपठित",
"@unread": {},
"all": "सब",
"@all": {},
"developers": "डेवेलपर्स",
"@developers": {},
"explore": "अन्वेषण",
"@explore": {},
"teams": "टीमों",
"@teams": {},
"file": "फ़ाइल",
"@file": {},
"files": "फ़ाइलें",
"@files": {},
"actions": "कार्रवाई",
"@actions": {},
"groups": "समूहों",
"@groups": {},
"mergeRequests": "मर्ज निवेदन",
"@mergeRequests": {},
"activity": "गतिविधि",
"@activity": {},
"project": "परियोजना",
"@project": {},
"selectAccount": "खाता चुनें",
"@selectAccount": {},
"removeAccount": "खाता हटाएं",
"somethingBadHappens": "त्रुटि हुई है: ",
"@removeAccount": {},
"somethingBadHappens": "त्रुटि हुई है:",
"@somethingBadHappens": {},
"githubAccount": "गिटहब खाता",
"permissionRequiredMessage": "गिट्टूच के लीये इन अनुमतियों की आवश्यकता है",
"@githubAccount": {},
"permissionRequiredMessage": "गिट्टूच को इन अनुमतियों की आवश्यकता है",
"@permissionRequiredMessage": {},
"notFoundMessage": "नहीं मिला",
"notFoundTextDisplay": "यह पृष्ठ कार्यान्वित नहीं है",
"gitlabAccount": "गितलब खाता",
"@notFoundMessage": {},
"notFoundTextDisplay": "ओह, यह पेज अभी तक लागू नहीं किया गया है।",
"@notFoundTextDisplay": {},
"gitlabAccount": "गितलैब खाता",
"@gitlabAccount": {},
"bitbucketAccount": "बीटबुकेत खाता",
"@bitbucketAccount": {},
"giteaAccount": "गीते खाता",
"longPressToRemoveAccount": "खाता हटाने के लिए लंबी प्रेस",
"giteeAccount": "जीती खाता",
"@giteaAccount": {},
"longPressToRemoveAccount": "खाता हटाने के लिए लंबा प्रेस",
"@longPressToRemoveAccount": {},
"giteeAccount": "जीटी खाता",
"@giteeAccount": {},
"user": "उपयोगकर्ता",
"@user": {},
"group": "समूह",
"@group": {},
"issue": "मुद्दा",
"@issue": {},
"code": "कोड",
"@code": {},
"projectActions": "परियोजना की कार्रवाई",
"@projectActions": {},
"syntaxHighlighting": "सिंटेक्स हाइलाइटिंग",
"@syntaxHighlighting": {},
"fontFamily": "फॉण्ट परिवार",
"@fontFamily": {},
"fontSize": "फॉण्ट आकार",
"fontStyle": "फॉण्ट प्रकार"
}
"@fontSize": {},
"fontStyle": "फॉण्ट प्रकार",
"@fontStyle": {}
}

1
lib/l10n/intl_hu.arb Normal file
View File

@ -0,0 +1 @@
{}

350
lib/l10n/intl_id.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "GAYA FONT",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Ukutan Font",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Keluarga Font",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "PENYOROTAN SINTAKS",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"code": "Kode",
"@code": {
"description": "Code"
},
"issue": "Isu",
"@issue": {
"description": "issue"
},
"group": "Grup",
"@group": {
"description": "group"
},
"user": "Pengguna",
"@user": {
"description": "user"
},
"giteeAccount": "Akun Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Akun Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Tekan dan tahan untuk menghapus akun",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Akun Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Akun GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Ups, halaman ini belum diimplementasikan.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "Tak Ditemukan",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch membutuhkan izin berikut",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Akun GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Sesuatu yang buruk terjadi:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Hapus akun",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Pilih akun",
"@selectAccount": {
"description": "select account message"
},
"project": "Proyek",
"@project": {
"description": "project"
},
"activity": "Aktivitas",
"@activity": {
"description": "activity"
},
"mergeRequests": "Merge Request",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Grup",
"@groups": {
"description": "groups"
},
"actions": "Aksi",
"@actions": {
"description": "actions"
},
"files": "Berkas",
"@files": {
"description": "file plural"
},
"file": "Berkas",
"@file": {
"description": "file"
},
"teams": "Tim",
"@teams": {
"description": "teams"
},
"explore": "Jelajah",
"@explore": {
"description": "explore"
},
"developers": "Pengembang",
"@developers": {
"description": "developers"
},
"all": "Semua",
"@all": {
"description": "all"
},
"unread": "Belum dibaca",
"@unread": {
"description": "unread"
},
"contributors": "Kontributor",
"@contributors": {
"description": "contributors"
},
"projectActions": "Aksi Proyek",
"@projectActions": {
"description": "Project Actions"
},
"commits": "Commit",
"@commits": {
"description": "Commits"
},
"branches": "Branch",
"@branches": {
"description": "branches"
},
"pullRequests": "Pull request",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Isu",
"@issues": {
"description": "issues"
},
"forks": "Fork",
"@forks": {
"description": "forks"
},
"watchers": "Pengamat",
"@watchers": {
"description": "watchers"
},
"releases": "Rilisan",
"@releases": {
"description": "releases"
},
"projects": "Proyek",
"@projects": {
"description": "projects"
},
"repositoryActions": "Aksi Repositori",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repositori",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Kode Sumber",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versi",
"@version": {
"description": "app version"
},
"about": "tentang",
"@about": {
"description": "about section"
},
"email": "Surel",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Nilai Aplikasi Ini",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Kirimkan isu",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "umpan balik",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Mesin Render Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Tema Kode",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Tema Scaffold",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Gelap",
"@dark": {
"description": "dark mode"
},
"light": "Terang",
"@light": {
"description": "light mode"
},
"followSystem": "Ikuti Sistem",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Kecerahan",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Ganti akun",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Status Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"reviewPermissions": "Tinjau Izin",
"@reviewPermissions": {
"description": "review Permissions"
},
"trending": "Trending",
"@trending": {
"description": "Trending"
},
"gitlabStatus": "Status GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"githubStatus": "Status GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "sistem",
"@system": {
"description": "system"
},
"settings": "Pengaturan",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "repositori yang disematkan",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "repositori populer",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Anggota",
"@members": {
"description": "members of an organization"
},
"organizations": "Organisasi",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gist",
"@gists": {
"description": "gists for a user"
},
"events": "Event",
"@events": {
"description": "events for a user"
},
"following": "Mengikuti",
"@following": {
"description": "people followed by a person"
},
"followers": "Pengikut",
"@followers": {
"description": "followers for a person"
},
"stars": "Bintang",
"@stars": {
"description": "stars on a repo"
},
"follow": "Ikuti",
"@follow": {
"description": "follow someone"
},
"unfollow": "Batal mengikuti",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Repositori",
"@repositories": {
"description": "repository text"
},
"participating": "Partisipasi",
"@participating": {
"description": "The participating Tab"
},
"me": "Saya",
"@me": {
"description": "The Me tab"
},
"search": "Cari",
"@search": {
"description": "The Search tab"
},
"notification": "Notifikasi",
"@notification": {
"description": "The Notification tab"
},
"news": "Berita",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_ja.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "フォントスタイル",
"@fontStyle": {
"description": "font style"
},
"fontSize": "文字サイズ",
"@fontSize": {
"description": "font size"
},
"fontFamily": "フォントファミリ",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "シンタックスハイライト",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "プロジェクトアクション",
"@projectActions": {
"description": "Project Actions"
},
"code": "コード",
"@code": {
"description": "Code"
},
"issue": "問題",
"@issue": {
"description": "issue"
},
"group": "グループ",
"@group": {
"description": "group"
},
"user": "ユーザー",
"@user": {
"description": "user"
},
"giteeAccount": "ギティーアカウント",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Giteaアカウント",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "長押しでアカウントを削除",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "ビットバケットアカウント",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "GitLab アカウント",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "おっと、このページはまだ実装されていません。",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "見つかりません",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch には以下のような権限が必要です。",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "GitHub アカウント",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "何か悪いことが起こる。",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "アカウントの削除",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "アカウントを選択",
"@selectAccount": {
"description": "select account message"
},
"project": "プロジェクト",
"@project": {
"description": "project"
},
"activity": "活動内容",
"@activity": {
"description": "activity"
},
"mergeRequests": "マージ要求",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "グループ",
"@groups": {
"description": "groups"
},
"actions": "アクション",
"@actions": {
"description": "actions"
},
"files": "ファイル",
"@files": {
"description": "file plural"
},
"file": "ファイル",
"@file": {
"description": "file"
},
"teams": "チーム紹介",
"@teams": {
"description": "teams"
},
"explore": "探索",
"@explore": {
"description": "explore"
},
"developers": "開発者",
"@developers": {
"description": "developers"
},
"all": "すべての",
"@all": {
"description": "all"
},
"unread": "未読",
"@unread": {
"description": "unread"
},
"contributors": "投稿者",
"@contributors": {
"description": "contributors"
},
"branches": "枝",
"@branches": {
"description": "branches"
},
"commits": "コミット",
"@commits": {
"description": "Commits"
},
"pullRequests": "プルリクエスト",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "問題点",
"@issues": {
"description": "issues"
},
"forks": "フォーク",
"@forks": {
"description": "forks"
},
"watchers": "ウォッチャー",
"@watchers": {
"description": "watchers"
},
"releases": "リリース",
"@releases": {
"description": "releases"
},
"projects": "プロジェクト",
"@projects": {
"description": "projects"
},
"repositoryActions": "リポジトリの操作",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "リポジトリ",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "ソースコード",
"@sourceCode": {
"description": "source code for app"
},
"version": "バージョン",
"@version": {
"description": "app version"
},
"about": "ぐらい",
"@about": {
"description": "about section"
},
"email": "電子メール",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "このアプリを評価する",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "課題を提出する",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "フィードバック",
"@feedback": {
"description": "provide feedback"
},
"webview": "ウェブビュー",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "ひらひらと",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "マークダウンレンダリングエンジン",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "コードテーマ",
"@codeTheme": {
"description": "code theme"
},
"material": "材料",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "クパチーノ",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "足場のテーマ",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "暗い",
"@dark": {
"description": "dark mode"
},
"light": "灯り",
"@light": {
"description": "light mode"
},
"followSystem": "フォローシステム",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "明るさ",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "アカウントの切り替え",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "ギテアステータス",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab のステータス",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "許可を確認する",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "GitHubのステータス",
"@githubStatus": {
"description": "github status"
},
"system": "系統",
"@system": {
"description": "system"
},
"settings": "設定",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "ピン留めリポジトリ",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "ポピュラーリポジトリ",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "メンバー",
"@members": {
"description": "members of an organization"
},
"organizations": "組織",
"@organizations": {
"description": "organizations for a user"
},
"gists": "ジスト",
"@gists": {
"description": "gists for a user"
},
"events": "イベント情報",
"@events": {
"description": "events for a user"
},
"following": "続いて",
"@following": {
"description": "people followed by a person"
},
"followers": "フォロワー数",
"@followers": {
"description": "followers for a person"
},
"stars": "星",
"@stars": {
"description": "stars on a repo"
},
"follow": "フォロー",
"@follow": {
"description": "follow someone"
},
"unfollow": "アンフォロー",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "リポジトリ",
"@repositories": {
"description": "repository text"
},
"participating": "参加している",
"@participating": {
"description": "The participating Tab"
},
"me": "吾輩",
"@me": {
"description": "The Me tab"
},
"search": "検索",
"@search": {
"description": "The Search tab"
},
"trending": "トレンド",
"@trending": {
"description": "Trending"
},
"notification": "お知らせ",
"@notification": {
"description": "The Notification tab"
},
"news": "ニュース",
"@news": {
"description": "The News tab"
}
}

1
lib/l10n/intl_nb.arb Symbolic link
View File

@ -0,0 +1 @@
intl_nb_NO.arb

350
lib/l10n/intl_nb_NO.arb Normal file
View File

@ -0,0 +1,350 @@
{
"reviewPermissions": "Tilgangsvurderinger",
"@reviewPermissions": {
"description": "review Permissions"
},
"material": "Materiell",
"@material": {
"description": "Material scaffold theme"
},
"gists": "Kludringer",
"@gists": {
"description": "gists for a user"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Stillas",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"unfollow": "Ikke følg",
"@unfollow": {
"description": "unfollow someone"
},
"trending": "På vei opp",
"@trending": {
"description": "Trending"
},
"notFoundTextDisplay": "Oida, denne siden er ikke implementert enda.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"somethingBadHappens": "Noe går galt:",
"@somethingBadHappens": {
"description": "error message"
},
"branches": "Forgreninger",
"@branches": {
"description": "branches"
},
"commits": "Innsendelser",
"@commits": {
"description": "Commits"
},
"pullRequests": "Hentingsforespørsler",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Feilrapporter",
"@issues": {
"description": "issues"
},
"watchers": "Seere",
"@watchers": {
"description": "watchers"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Markdown-opptegningsmotor",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"follow": "Følg",
"@follow": {
"description": "follow someone"
},
"permissionRequiredMessage": "GitTouch trenger disse tilgangene",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"notFoundMessage": "Ikke funnet",
"@notFoundMessage": {
"description": "Not found page header"
},
"syntaxHighlighting": "SYNTAKSFRAMHEVING",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"fontStyle": "SKRIFTSTIL",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Skriftstørrelse",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Skriftfamilie",
"@fontFamily": {
"description": "Font Family"
},
"projectActions": "Prosjekthandlinger",
"@projectActions": {
"description": "Project Actions"
},
"code": "Kode",
"@code": {
"description": "Code"
},
"issue": "Problem",
"@issue": {
"description": "issue"
},
"group": "Gruppe",
"@group": {
"description": "group"
},
"user": "Bruker",
"@user": {
"description": "user"
},
"giteeAccount": "Gitee-konto",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Gitea-konto",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Trykk lenge for å fjerne konto",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Bitbucket-konto",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "GitLab-konto",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"githubAccount": "GitHub-konto",
"@githubAccount": {
"description": "Gitea Account"
},
"removeAccount": "Fjern konto",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Velg konto",
"@selectAccount": {
"description": "select account message"
},
"project": "Prosjekt",
"@project": {
"description": "project"
},
"activity": "Aktivitet",
"@activity": {
"description": "activity"
},
"mergeRequests": "Flett forespørsler",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Grupper",
"@groups": {
"description": "groups"
},
"actions": "Handlinger",
"@actions": {
"description": "actions"
},
"files": "Filer",
"@files": {
"description": "file plural"
},
"file": "Fil",
"@file": {
"description": "file"
},
"teams": "Lag",
"@teams": {
"description": "teams"
},
"explore": "Utforsk",
"@explore": {
"description": "explore"
},
"developers": "Utviklere",
"@developers": {
"description": "developers"
},
"all": "Alle",
"@all": {
"description": "all"
},
"unread": "Ulest",
"@unread": {
"description": "unread"
},
"contributors": "Bidragsytere",
"@contributors": {
"description": "contributors"
},
"forks": "Forgreninger",
"@forks": {
"description": "forks"
},
"releases": "Utgivelser",
"@releases": {
"description": "releases"
},
"projects": "Prosjekter",
"@projects": {
"description": "projects"
},
"repositoryActions": "Kodelagerhandlinger",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Kodelager",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Kildekode",
"@sourceCode": {
"description": "source code for app"
},
"about": "om",
"@about": {
"description": "about section"
},
"version": "Versjon",
"@version": {
"description": "app version"
},
"email": "E-post",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Vurder programmet",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Send inn en feilrapport",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "tilbakemelding",
"@feedback": {
"description": "provide feedback"
},
"codeTheme": "Kodedrakt",
"@codeTheme": {
"description": "code theme"
},
"dark": "Mørk",
"@dark": {
"description": "dark mode"
},
"light": "Lys",
"@light": {
"description": "light mode"
},
"followSystem": "Følg systemet",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Lysstyrke",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Bytt kontoer",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Gitea-status",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab-status",
"@gitlabStatus": {
"description": "GitLab status"
},
"githubStatus": "GitHub-status",
"@githubStatus": {
"description": "github status"
},
"system": "system",
"@system": {
"description": "system"
},
"settings": "Innstillinger",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "festede kodelager",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "populære kodelager",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Medlemmer",
"@members": {
"description": "members of an organization"
},
"organizations": "Organisasjoner",
"@organizations": {
"description": "organizations for a user"
},
"events": "Hendelser",
"@events": {
"description": "events for a user"
},
"following": "Følger",
"@following": {
"description": "people followed by a person"
},
"followers": "Følgere",
"@followers": {
"description": "followers for a person"
},
"stars": "Stjerner",
"@stars": {
"description": "stars on a repo"
},
"repositories": "Kodelager",
"@repositories": {
"description": "repository text"
},
"participating": "Deltar",
"@participating": {
"description": "The participating Tab"
},
"me": "Meg",
"@me": {
"description": "The Me tab"
},
"search": "Søk",
"@search": {
"description": "The Search tab"
},
"notification": "Merknad",
"@notification": {
"description": "The Notification tab"
},
"news": "Nyheter",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_nl.arb Normal file
View File

@ -0,0 +1,350 @@
{
"projectActions": "Projectacties",
"@projectActions": {
"description": "Project Actions"
},
"code": "Code",
"@code": {
"description": "Code"
},
"issue": "Issue",
"@issue": {
"description": "issue"
},
"group": "Groep",
"@group": {
"description": "group"
},
"user": "Gebruiker",
"@user": {
"description": "user"
},
"giteeAccount": "Gitee-account",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Gitea-account",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Houd ingedrukt om account te verwijderen",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Bitbucket-account",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "GitLab-account",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Opes, deze pagina is nog niet geïmplementeerd.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "NIet gevonden",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch vereist de volgende rechten",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "GitHub-account",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Er iets ergs gebeurd:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Account verwijderen",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Kies een account",
"@selectAccount": {
"description": "select account message"
},
"project": "Project",
"@project": {
"description": "project"
},
"activity": "Activiteit",
"@activity": {
"description": "activity"
},
"mergeRequests": "Samenvoegverzoeken",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Groepen",
"@groups": {
"description": "groups"
},
"actions": "Acties",
"@actions": {
"description": "actions"
},
"files": "Bestanden",
"@files": {
"description": "file plural"
},
"file": "Bestand",
"@file": {
"description": "file"
},
"teams": "Teams",
"@teams": {
"description": "teams"
},
"explore": "Verkennen",
"@explore": {
"description": "explore"
},
"developers": "Ontwikkelaars",
"@developers": {
"description": "developers"
},
"all": "Alles",
"@all": {
"description": "all"
},
"unread": "Ongelezen",
"@unread": {
"description": "unread"
},
"contributors": "Bijdragers",
"@contributors": {
"description": "contributors"
},
"branches": "Takken",
"@branches": {
"description": "branches"
},
"commits": "Commits",
"@commits": {
"description": "Commits"
},
"pullRequests": "Pull requests",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Issues",
"@issues": {
"description": "issues"
},
"forks": "Afsplitsingen",
"@forks": {
"description": "forks"
},
"watchers": "Volgers",
"@watchers": {
"description": "watchers"
},
"releases": "Uitgaven",
"@releases": {
"description": "releases"
},
"projects": "Projecten",
"@projects": {
"description": "projects"
},
"repositoryActions": "Repo-acties",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repo",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Broncode",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versie",
"@version": {
"description": "app version"
},
"fontStyle": "LETTERTYPESTIJL",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Lettergrootte",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Lettertype",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "SYNTAXMARKERING",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"about": "over",
"@about": {
"description": "about section"
},
"email": "E-mailadres",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Beoordeel deze app",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Issue openen",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "feedback",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Markdown-renderaandrijving",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Codethema",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Scaffold-thema",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Donker",
"@dark": {
"description": "dark mode"
},
"light": "Licht",
"@light": {
"description": "light mode"
},
"followSystem": "Systeemthema",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Helherheid",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Ander account kiezen",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Gitea-status",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab-status",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Rechten bekijken",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "GitHub-status",
"@githubStatus": {
"description": "github status"
},
"system": "systeem",
"@system": {
"description": "system"
},
"settings": "Instellingen",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "vastgemaakte repo's",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "populaire repo's",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Leden",
"@members": {
"description": "members of an organization"
},
"organizations": "Organisaties",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "Gebeurtenissen",
"@events": {
"description": "events for a user"
},
"following": "Volgend",
"@following": {
"description": "people followed by a person"
},
"followers": "Volgers",
"@followers": {
"description": "followers for a person"
},
"stars": "Favorieten",
"@stars": {
"description": "stars on a repo"
},
"follow": "Volgen",
"@follow": {
"description": "follow someone"
},
"unfollow": "Ontvolgen",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Repo's",
"@repositories": {
"description": "repository text"
},
"participating": "Lid van",
"@participating": {
"description": "The participating Tab"
},
"me": "Ik",
"@me": {
"description": "The Me tab"
},
"search": "Zoeken",
"@search": {
"description": "The Search tab"
},
"trending": "Populair",
"@trending": {
"description": "Trending"
},
"notification": "Melding",
"@notification": {
"description": "The Notification tab"
},
"news": "Nieuws",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_pt.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "FONT STYLE",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Tamanho de letra",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Família da Fonte",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "REALCE DE SINTAXE",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "Ações do Projeto",
"@projectActions": {
"description": "Project Actions"
},
"code": "Código",
"@code": {
"description": "Code"
},
"issue": "Edição",
"@issue": {
"description": "issue"
},
"group": "Grupo",
"@group": {
"description": "group"
},
"user": "Utilizador",
"@user": {
"description": "user"
},
"giteeAccount": "Conta Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Conta Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Long Press para remover conta",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Conta Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Conta no GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Oops, esta página ainda não está implementada.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "Não Encontrado",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch precisa destas permissões",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Conta GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Algo de mau acontece:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Remover conta",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Selecione a conta",
"@selectAccount": {
"description": "select account message"
},
"project": "Projeto",
"@project": {
"description": "project"
},
"activity": "Atividade",
"@activity": {
"description": "activity"
},
"mergeRequests": "Pedidos de fusão",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Grupos",
"@groups": {
"description": "groups"
},
"actions": "Ações",
"@actions": {
"description": "actions"
},
"files": "Arquivos",
"@files": {
"description": "file plural"
},
"file": "Arquivo",
"@file": {
"description": "file"
},
"teams": "Equipes",
"@teams": {
"description": "teams"
},
"explore": "Explore",
"@explore": {
"description": "explore"
},
"developers": "Desenvolvedores",
"@developers": {
"description": "developers"
},
"all": "Todos",
"@all": {
"description": "all"
},
"unread": "Não lido",
"@unread": {
"description": "unread"
},
"contributors": "Contribuintes",
"@contributors": {
"description": "contributors"
},
"branches": "Filiais",
"@branches": {
"description": "branches"
},
"commits": "Compromissos",
"@commits": {
"description": "Commits"
},
"pullRequests": "Pedidos de retirada",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Edições",
"@issues": {
"description": "issues"
},
"forks": "Garfos",
"@forks": {
"description": "forks"
},
"watchers": "Observadores",
"@watchers": {
"description": "watchers"
},
"releases": "Lançamentos",
"@releases": {
"description": "releases"
},
"projects": "Projetos",
"@projects": {
"description": "projects"
},
"repositoryActions": "Ações Repositórias",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repositório",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Código fonte",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versão",
"@version": {
"description": "app version"
},
"about": "sobre",
"@about": {
"description": "about section"
},
"email": "Email",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Avalie este aplicativo",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Submeter um problema",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "comentários",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Motor Markdown Render",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Tema do Código",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Tema do Andaime",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Escuro",
"@dark": {
"description": "dark mode"
},
"light": "Luz",
"@light": {
"description": "light mode"
},
"followSystem": "Sistema de acompanhamento",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Brilho",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "mudar de conta",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "estatuto de Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Estado do GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Permissões de revisão",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "Estado do GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "sistema",
"@system": {
"description": "system"
},
"settings": "Configurações",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "repositórios afixados",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "repositórios populares",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Membros",
"@members": {
"description": "members of an organization"
},
"organizations": "Organizações",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Síntese",
"@gists": {
"description": "gists for a user"
},
"events": "Eventos",
"@events": {
"description": "events for a user"
},
"following": "A seguir",
"@following": {
"description": "people followed by a person"
},
"followers": "Seguidores",
"@followers": {
"description": "followers for a person"
},
"stars": "Estrelas",
"@stars": {
"description": "stars on a repo"
},
"follow": "Siga",
"@follow": {
"description": "follow someone"
},
"unfollow": "Unfollow",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Repositórios",
"@repositories": {
"description": "repository text"
},
"participating": "Participando",
"@participating": {
"description": "The participating Tab"
},
"me": "Eu",
"@me": {
"description": "The Me tab"
},
"search": "Pesquisa",
"@search": {
"description": "The Search tab"
},
"trending": "Tendência",
"@trending": {
"description": "Trending"
},
"notification": "Notificação",
"@notification": {
"description": "The Notification tab"
},
"news": "Notícias",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_pt_BR.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "ESTILO DA FONTE",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Tamanho da Fonte",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Família da Fonte",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "DESTAQUE DA SINTAXE",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "Ações do Projeto",
"@projectActions": {
"description": "Project Actions"
},
"code": "Código",
"@code": {
"description": "Code"
},
"issue": "Issue",
"@issue": {
"description": "issue"
},
"group": "Grupo",
"@group": {
"description": "group"
},
"user": "Usuário",
"@user": {
"description": "user"
},
"giteeAccount": "Conta Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Conta Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Aperte e segure para remover a conta",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Conta Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Conta GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "Ops, esta página ainda não foi implementada.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "Não Encontrado",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "O GitTouch precisa dessas permissões",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Conta GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Algo ruim aconteceu:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Remover conta",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Selecionar conta",
"@selectAccount": {
"description": "select account message"
},
"project": "Projeto",
"@project": {
"description": "project"
},
"activity": "Atividade",
"@activity": {
"description": "activity"
},
"mergeRequests": "Mesclar Requests",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Grupos",
"@groups": {
"description": "groups"
},
"actions": "Ações",
"@actions": {
"description": "actions"
},
"files": "Arquivos",
"@files": {
"description": "file plural"
},
"file": "Arquivo",
"@file": {
"description": "file"
},
"teams": "Times",
"@teams": {
"description": "teams"
},
"explore": "Explorar",
"@explore": {
"description": "explore"
},
"developers": "Desenvolvedores",
"@developers": {
"description": "developers"
},
"all": "Todos",
"@all": {
"description": "all"
},
"unread": "Não lido",
"@unread": {
"description": "unread"
},
"contributors": "Contribuintes",
"@contributors": {
"description": "contributors"
},
"branches": "Branches",
"@branches": {
"description": "branches"
},
"commits": "Commits",
"@commits": {
"description": "Commits"
},
"pullRequests": "Pull requests",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "Issues",
"@issues": {
"description": "issues"
},
"forks": "Forks",
"@forks": {
"description": "forks"
},
"watchers": "Observadores",
"@watchers": {
"description": "watchers"
},
"releases": "Lançamentos",
"@releases": {
"description": "releases"
},
"projects": "Projetos",
"@projects": {
"description": "projects"
},
"repositoryActions": "Ações do Repositório",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Repositório",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Código Fonte",
"@sourceCode": {
"description": "source code for app"
},
"version": "Versão",
"@version": {
"description": "app version"
},
"about": "sobre",
"@about": {
"description": "about section"
},
"email": "Email",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "Classificar Este Aplicativo",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "Enviar um issue",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "feedback",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Motor de Renderização do Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Tema do Código",
"@codeTheme": {
"description": "code theme"
},
"material": "Material",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Tema Scaffold",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "Escuro",
"@dark": {
"description": "dark mode"
},
"light": "Claro",
"@light": {
"description": "light mode"
},
"followSystem": "Seguir o Sistema",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "Brilho",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Trocar contas",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Status do Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Status do GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Revisar Permissões",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "Status do GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "sistema",
"@system": {
"description": "system"
},
"settings": "Configurações",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "repositórios fixados",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "repositórios populares",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "Membros",
"@members": {
"description": "members of an organization"
},
"organizations": "Organizações",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "Eventos",
"@events": {
"description": "events for a user"
},
"following": "Seguindo",
"@following": {
"description": "people followed by a person"
},
"followers": "Seguidores",
"@followers": {
"description": "followers for a person"
},
"stars": "Estrelas",
"@stars": {
"description": "stars on a repo"
},
"follow": "Seguir",
"@follow": {
"description": "follow someone"
},
"unfollow": "Parar de seguir",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Repositórios",
"@repositories": {
"description": "repository text"
},
"participating": "Participando",
"@participating": {
"description": "The participating Tab"
},
"me": "Eu",
"@me": {
"description": "The Me tab"
},
"search": "Buscar",
"@search": {
"description": "The Search tab"
},
"trending": "Tendências",
"@trending": {
"description": "Trending"
},
"notification": "Notificação",
"@notification": {
"description": "The Notification tab"
},
"news": "Notícias",
"@news": {
"description": "The News tab"
}
}

290
lib/l10n/intl_ru.arb Normal file
View File

@ -0,0 +1,290 @@
{
"code": "Код",
"@code": {
"description": "Code"
},
"notFoundTextDisplay": "Ой, эта страница еще не реализована.",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"commits": "Коммиты",
"@commits": {
"description": "Commits"
},
"forks": "Форки",
"@forks": {
"description": "forks"
},
"email": "Эл. почта",
"@email": {
"description": "Email to report issues"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"dark": "Тёмный",
"@dark": {
"description": "dark mode"
},
"light": "Светлый",
"@light": {
"description": "light mode"
},
"members": "Участники",
"@members": {
"description": "members of an organization"
},
"fontStyle": "СТИЛЬ ШРИФТА",
"@fontStyle": {
"description": "font style"
},
"fontSize": "Размер шрифта",
"@fontSize": {
"description": "font size"
},
"fontFamily": "Семейство шрифтов",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "ПОДСВЕТКА СИНТАКСИСА",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"group": "Группа",
"@group": {
"description": "group"
},
"user": "Пользователь",
"@user": {
"description": "user"
},
"giteeAccount": "Аккаунт Gitee",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Аккаунт Gitea",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "Длительное нажатие для удаления учетной записи",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Аккаунт Bitbucket",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "Аккаунт GitLab",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundMessage": "Не найдено",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch нужны эти разрешения",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "Аккаунт GitHub",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "Происходит что-то плохое:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "Удалить аккаунт",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "Выберите аккаунт",
"@selectAccount": {
"description": "select account message"
},
"project": "Проект",
"@project": {
"description": "project"
},
"activity": "Активность",
"@activity": {
"description": "activity"
},
"mergeRequests": "Запросы на слияние",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "Группы",
"@groups": {
"description": "groups"
},
"actions": "Действия",
"@actions": {
"description": "actions"
},
"files": "Файлы",
"@files": {
"description": "file plural"
},
"file": "Файл",
"@file": {
"description": "file"
},
"teams": "Команды",
"@teams": {
"description": "teams"
},
"developers": "Разработчики",
"@developers": {
"description": "developers"
},
"all": "Все",
"@all": {
"description": "all"
},
"unread": "Не прочитано",
"@unread": {
"description": "unread"
},
"releases": "Релизы",
"@releases": {
"description": "releases"
},
"projects": "Проекты",
"@projects": {
"description": "projects"
},
"repositoryActions": "Действия в репозитории",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "Репозиторий",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "Исходный код",
"@sourceCode": {
"description": "source code for app"
},
"version": "Версия",
"@version": {
"description": "app version"
},
"about": "о приложении",
"@about": {
"description": "about section"
},
"rateThisApp": "Оценить это приложение",
"@rateThisApp": {
"description": "rate the app"
},
"feedback": "обратная связь",
"@feedback": {
"description": "provide feedback"
},
"markdownRenderEngine": "Механизм рендеринга Markdown",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "Тема кода",
"@codeTheme": {
"description": "code theme"
},
"cupertino": "Купертино",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"brightness": "Яркость",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "Сменить аккаунт",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Статус Gitea",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "Статус GitLab",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "Просмотр разрешений",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "Статус GitHub",
"@githubStatus": {
"description": "github status"
},
"system": "система",
"@system": {
"description": "system"
},
"settings": "Настройки",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "закрепленные репозитории",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "популярные репозитории",
"@popularRepositories": {
"description": "popular repositories"
},
"organizations": "Организации",
"@organizations": {
"description": "organizations for a user"
},
"events": "События",
"@events": {
"description": "events for a user"
},
"followers": "Подписчики",
"@followers": {
"description": "followers for a person"
},
"stars": "Звезды",
"@stars": {
"description": "stars on a repo"
},
"follow": "Подписаться",
"@follow": {
"description": "follow someone"
},
"unfollow": "Отписаться",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "Репозитории",
"@repositories": {
"description": "repository text"
},
"me": "Я",
"@me": {
"description": "The Me tab"
},
"search": "Поиск",
"@search": {
"description": "The Search tab"
},
"trending": "Тренды",
"@trending": {
"description": "Trending"
},
"notification": "Уведомления",
"@notification": {
"description": "The Notification tab"
},
"news": "Новости",
"@news": {
"description": "The News tab"
}
}

10
lib/l10n/intl_si.arb Normal file
View File

@ -0,0 +1,10 @@
{
"notification": "දැනුම්දීම",
"@notification": {
"description": "The Notification tab"
},
"news": "පුවත්",
"@news": {
"description": "The News tab"
}
}

1
lib/l10n/intl_zh.arb Symbolic link
View File

@ -0,0 +1 @@
intl_zh_Hans.arb

350
lib/l10n/intl_zh_Hans.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "字体样式",
"@fontStyle": {
"description": "font style"
},
"fontSize": "字体大小",
"@fontSize": {
"description": "font size"
},
"fontFamily": "字体",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "语法高亮",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"code": "代码",
"@code": {
"description": "Code"
},
"group": "小组",
"@group": {
"description": "group"
},
"user": "用户",
"@user": {
"description": "user"
},
"giteeAccount": "Gitee 账户",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Gitea 账户",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "长按以移除账户",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Bitbucket 账户",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "GitLab 账户",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "这个页面还没有实现。",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "未找到",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch 需要这些权限",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "GitHub 账户",
"@githubAccount": {
"description": "Gitea Account"
},
"removeAccount": "移除账户",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "选择账户",
"@selectAccount": {
"description": "select account message"
},
"project": "项目",
"@project": {
"description": "project"
},
"activity": "活动",
"@activity": {
"description": "activity"
},
"groups": "小组",
"@groups": {
"description": "groups"
},
"actions": "操作",
"@actions": {
"description": "actions"
},
"files": "文件",
"@files": {
"description": "file plural"
},
"file": "文件",
"@file": {
"description": "file"
},
"teams": "团队",
"@teams": {
"description": "teams"
},
"explore": "发现",
"@explore": {
"description": "explore"
},
"developers": "开发者",
"@developers": {
"description": "developers"
},
"all": "所有",
"@all": {
"description": "all"
},
"unread": "未读",
"@unread": {
"description": "unread"
},
"contributors": "贡献者",
"@contributors": {
"description": "contributors"
},
"watchers": "关注者",
"@watchers": {
"description": "watchers"
},
"projects": "项目介绍",
"@projects": {
"description": "projects"
},
"repositoryActions": "仓库操作",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "仓库",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "源代码",
"@sourceCode": {
"description": "source code for app"
},
"version": "版本",
"@version": {
"description": "app version"
},
"about": "关于",
"@about": {
"description": "about section"
},
"email": "电子邮件",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "评价此应用",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "提交 issue",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "用户反馈",
"@feedback": {
"description": "provide feedback"
},
"markdownRenderEngine": "Markdown 渲染引擎",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "代码主题",
"@codeTheme": {
"description": "code theme"
},
"dark": "深色",
"@dark": {
"description": "dark mode"
},
"light": "浅色",
"@light": {
"description": "light mode"
},
"followSystem": "跟随系统",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "亮度",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "切换账户",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "Gitea 系统状态",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab 系统状态",
"@gitlabStatus": {
"description": "GitLab status"
},
"githubStatus": "GitHub 系统状态",
"@githubStatus": {
"description": "github status"
},
"system": "系统默认",
"@system": {
"description": "system"
},
"settings": "设置",
"@settings": {
"description": "settings"
},
"members": "成员",
"@members": {
"description": "members of an organization"
},
"organizations": "组织",
"@organizations": {
"description": "organizations for a user"
},
"events": "事件",
"@events": {
"description": "events for a user"
},
"following": "正在关注",
"@following": {
"description": "people followed by a person"
},
"followers": "关注者",
"@followers": {
"description": "followers for a person"
},
"stars": "已加星标",
"@stars": {
"description": "stars on a repo"
},
"follow": "关注",
"@follow": {
"description": "follow someone"
},
"unfollow": "取消关注",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "仓库",
"@repositories": {
"description": "repository text"
},
"participating": "参与",
"@participating": {
"description": "The participating Tab"
},
"me": "我",
"@me": {
"description": "The Me tab"
},
"search": "搜索",
"@search": {
"description": "The Search tab"
},
"trending": "趋势",
"@trending": {
"description": "Trending"
},
"notification": "通知",
"@notification": {
"description": "The Notification tab"
},
"projectActions": "项目操作",
"@projectActions": {
"description": "Project Actions"
},
"issue": "问题",
"@issue": {
"description": "issue"
},
"somethingBadHappens": "糟糕的事情发生了:",
"@somethingBadHappens": {
"description": "error message"
},
"mergeRequests": "合并请求",
"@mergeRequests": {
"description": "Merge request"
},
"branches": "分支",
"@branches": {
"description": "branches"
},
"commits": "提交",
"@commits": {
"description": "Commits"
},
"pullRequests": "拉取请求",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "问题",
"@issues": {
"description": "issues"
},
"forks": "分叉",
"@forks": {
"description": "forks"
},
"releases": "发布",
"@releases": {
"description": "releases"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "Flutter",
"@flutter": {
"description": "render flutter for markdown"
},
"material": "材质设计",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "Cupertino",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "Scaffold主题",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"reviewPermissions": "审查权限",
"@reviewPermissions": {
"description": "review Permissions"
},
"pinnedRepositories": "置顶仓库",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "热门库",
"@popularRepositories": {
"description": "popular repositories"
},
"gists": "代码片段",
"@gists": {
"description": "gists for a user"
},
"news": "新闻",
"@news": {
"description": "The News tab"
}
}

350
lib/l10n/intl_zh_Hant.arb Normal file
View File

@ -0,0 +1,350 @@
{
"fontStyle": "字体样式",
"@fontStyle": {
"description": "font style"
},
"fontSize": "字体大小",
"@fontSize": {
"description": "font size"
},
"fontFamily": "字体家族",
"@fontFamily": {
"description": "Font Family"
},
"syntaxHighlighting": "同义词高亮",
"@syntaxHighlighting": {
"description": "Syntax Highlighting"
},
"projectActions": "项目行动",
"@projectActions": {
"description": "Project Actions"
},
"code": "编码",
"@code": {
"description": "Code"
},
"issue": "问题",
"@issue": {
"description": "issue"
},
"group": "集团",
"@group": {
"description": "group"
},
"user": "用户",
"@user": {
"description": "user"
},
"giteeAccount": "Gitee账户",
"@giteeAccount": {
"description": "Gitee Account"
},
"giteaAccount": "Gitea账户",
"@giteaAccount": {
"description": "Gitea Account"
},
"longPressToRemoveAccount": "长按删除账户",
"@longPressToRemoveAccount": {
"description": "Long Press to remove account"
},
"bitbucketAccount": "Bitbucket账户",
"@bitbucketAccount": {
"description": "Bitbucket Account"
},
"gitlabAccount": "GitLab账户",
"@gitlabAccount": {
"description": "Gitlab Account"
},
"notFoundTextDisplay": "哎呀,这个页面还没有实现。",
"@notFoundTextDisplay": {
"description": "Not found error message"
},
"notFoundMessage": "未找到",
"@notFoundMessage": {
"description": "Not found page header"
},
"permissionRequiredMessage": "GitTouch需要以下权限",
"@permissionRequiredMessage": {
"description": "Permission Required Message"
},
"githubAccount": "GitHub账户",
"@githubAccount": {
"description": "Gitea Account"
},
"somethingBadHappens": "糟糕的事情发生了:",
"@somethingBadHappens": {
"description": "error message"
},
"removeAccount": "删除账户",
"@removeAccount": {
"description": "remove account"
},
"selectAccount": "选择账户",
"@selectAccount": {
"description": "select account message"
},
"project": "项目介绍",
"@project": {
"description": "project"
},
"activity": "活动",
"@activity": {
"description": "activity"
},
"mergeRequests": "合并请求",
"@mergeRequests": {
"description": "Merge request"
},
"groups": "群体",
"@groups": {
"description": "groups"
},
"actions": "行动",
"@actions": {
"description": "actions"
},
"files": "文件",
"@files": {
"description": "file plural"
},
"file": "文件",
"@file": {
"description": "file"
},
"teams": "队伍",
"@teams": {
"description": "teams"
},
"explore": "探索",
"@explore": {
"description": "explore"
},
"developers": "开发商",
"@developers": {
"description": "developers"
},
"all": "全部",
"@all": {
"description": "all"
},
"unread": "未读",
"@unread": {
"description": "unread"
},
"contributors": "贡献者",
"@contributors": {
"description": "contributors"
},
"branches": "分支机构",
"@branches": {
"description": "branches"
},
"commits": "承诺",
"@commits": {
"description": "Commits"
},
"pullRequests": "拉动请求",
"@pullRequests": {
"description": "Pull Requests"
},
"issues": "问题",
"@issues": {
"description": "issues"
},
"forks": "叉子",
"@forks": {
"description": "forks"
},
"watchers": "守望者",
"@watchers": {
"description": "watchers"
},
"releases": "发布",
"@releases": {
"description": "releases"
},
"projects": "项目介绍",
"@projects": {
"description": "projects"
},
"repositoryActions": "存储库行动",
"@repositoryActions": {
"description": "Repository Actions"
},
"repository": "储存库",
"@repository": {
"description": "Repository screen title"
},
"sourceCode": "源代码",
"@sourceCode": {
"description": "source code for app"
},
"version": "版本",
"@version": {
"description": "app version"
},
"about": "关于",
"@about": {
"description": "about section"
},
"email": "电子邮件",
"@email": {
"description": "Email to report issues"
},
"rateThisApp": "给这个应用程序评分",
"@rateThisApp": {
"description": "rate the app"
},
"submitAnIssue": "提交问题",
"@submitAnIssue": {
"description": "submit issue for app"
},
"feedback": "反馈",
"@feedback": {
"description": "provide feedback"
},
"webview": "WebView",
"@webview": {
"description": "render webview for markdown"
},
"flutter": "翩翩",
"@flutter": {
"description": "render flutter for markdown"
},
"markdownRenderEngine": "Markdown 渲染引擎",
"@markdownRenderEngine": {
"description": "flutter or webview rendering for markdown"
},
"codeTheme": "代码主题",
"@codeTheme": {
"description": "code theme"
},
"material": "材质",
"@material": {
"description": "Material scaffold theme"
},
"cupertino": "库柏蒂诺",
"@cupertino": {
"description": "Cupertino scaffold theme"
},
"scaffoldTheme": "脚手架主题",
"@scaffoldTheme": {
"description": "Kind of theme - cupertino or material"
},
"dark": "黑暗",
"@dark": {
"description": "dark mode"
},
"light": "灯光",
"@light": {
"description": "light mode"
},
"followSystem": "遵循系统",
"@followSystem": {
"description": "follow systems setting"
},
"brightness": "亮度",
"@brightness": {
"description": "brightness"
},
"switchAccounts": "转换账户",
"@switchAccounts": {
"description": "Switch accounts"
},
"giteaStatus": "基特阿地位",
"@giteaStatus": {
"description": "Gitea status"
},
"gitlabStatus": "GitLab状态",
"@gitlabStatus": {
"description": "GitLab status"
},
"reviewPermissions": "审查权限",
"@reviewPermissions": {
"description": "review Permissions"
},
"githubStatus": "GitHub状态",
"@githubStatus": {
"description": "github status"
},
"system": "制度",
"@system": {
"description": "system"
},
"settings": "设置",
"@settings": {
"description": "settings"
},
"pinnedRepositories": "钉住的存储库",
"@pinnedRepositories": {
"description": "pinned repositories"
},
"popularRepositories": "热门库",
"@popularRepositories": {
"description": "popular repositories"
},
"members": "成员",
"@members": {
"description": "members of an organization"
},
"organizations": "组织机构",
"@organizations": {
"description": "organizations for a user"
},
"gists": "Gists",
"@gists": {
"description": "gists for a user"
},
"events": "事件",
"@events": {
"description": "events for a user"
},
"following": "以下",
"@following": {
"description": "people followed by a person"
},
"followers": "追随者",
"@followers": {
"description": "followers for a person"
},
"stars": "明星",
"@stars": {
"description": "stars on a repo"
},
"follow": "遵循",
"@follow": {
"description": "follow someone"
},
"unfollow": "取消关注",
"@unfollow": {
"description": "unfollow someone"
},
"repositories": "储存库",
"@repositories": {
"description": "repository text"
},
"participating": "参与",
"@participating": {
"description": "The participating Tab"
},
"me": "我",
"@me": {
"description": "The Me tab"
},
"search": "检索",
"@search": {
"description": "The Search tab"
},
"trending": "趋势",
"@trending": {
"description": "Trending"
},
"notification": "通知",
"@notification": {
"description": "The Notification tab"
},
"news": "新闻中心",
"@news": {
"description": "The News tab"
}
}

View File

@ -1,84 +1,39 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/app.dart';
import 'package:git_touch/models/code.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/router.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/models/code.dart';
import 'package:git_touch/models/notification.dart';
import 'package:fluro/fluro.dart';
import 'package:fimber/fimber.dart';
import 'package:flutter/services.dart';
import 'package:git_touch/models/theme.dart';
import 'package:provider/provider.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Platform messages may fail, so we use a try/catch PlatformException.
await SentryFlutter.init(
(options) {
options.dsn =
'https://006354525fa244289c48169790fa3757@o71119.ingest.sentry.io/5814819';
},
// Init your App.
appRunner: () async {
final notificationModel = NotificationModel();
final themeModel = ThemeModel();
final authModel = AuthModel();
final codeModel = CodeModel();
await Future.wait([
themeModel.init(),
authModel.init(),
codeModel.init(),
]);
// try {
// String initialLink = await getInitialLink();
// Fimber.d(initialLink);
// } on PlatformException {
// Fimber.d('test');
// }
// DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
// AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
// Fimber.d('Running on ${androidInfo.model}'); // e.g. "Moto G (4)"
// IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
// Fimber.d('Running on ${iosInfo.utsname.machine}'); // e.g. "iPod7,1"
// TODO: Later, should check to enable debug log in debug build only
Fimber.plantTree(DebugTree());
final notificationModel = NotificationModel();
final themeModel = ThemeModel();
final authModel = AuthModel();
final codeModel = CodeModel();
await Future.wait([
themeModel.init(),
authModel.init(),
codeModel.init(),
]);
CommonRouter.routes.forEach((screen) {
themeModel.router.define(CommonRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
GitlabRouter.routes.forEach((screen) {
themeModel.router.define(GitlabRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
GiteaRouter.routes.forEach((screen) {
themeModel.router.define(GiteaRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
BitbucketRouter.routes.forEach((screen) {
themeModel.router.define(BitbucketRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
GithubRouter.routes.forEach((screen) {
themeModel.router.define(GithubRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
GiteeRouter.routes.forEach((screen) {
themeModel.router.define(GiteeRouter.prefix + screen.path,
handler: Handler(handlerFunc: screen.handler));
});
// To match status bar color to app bar color
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
));
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => notificationModel),
ChangeNotifierProvider(create: (context) => themeModel),
ChangeNotifierProvider(create: (context) => authModel),
ChangeNotifierProvider(create: (context) => codeModel),
],
child: MyApp(),
));
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => notificationModel),
ChangeNotifierProvider(create: (context) => themeModel),
ChangeNotifierProvider(create: (context) => authModel),
ChangeNotifierProvider(create: (context) => codeModel),
],
child: const MyApp(),
));
},
);
}

View File

@ -1,44 +1,22 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:meta/meta.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'account.freezed.dart';
part 'account.g.dart';
@JsonSerializable(includeIfNull: false)
class Account {
String platform;
String domain;
String token;
String login;
String avatarUrl;
int gitlabId; // For GitLab
String appPassword; // For Bitbucket
String accountId; // For Bitbucket
// equals(Account a) {
// final uri = Uri.parse(domain);
// final uriA = Uri.parse(a.domain);
// // Treat domains as the same if they have the same hosts and ports
// return a.platform == platform &&
// a.login == login &&
// a.gitlabId == gitlabId &&
// uri.host == uriA.host &&
// uri.port == uriA.port;
// }
Account({
@required this.platform,
@required this.domain,
@required this.token,
@required this.login,
@required this.avatarUrl,
this.gitlabId,
this.appPassword,
this.accountId,
});
@freezed
class Account with _$Account {
@JsonSerializable(includeIfNull: false)
factory Account({
required String platform,
required String domain,
required String token,
required String login,
required String avatarUrl,
int? gitlabId, // For GitLab
String? appPassword, // For Bitbucket
String? accountId, // For Bitbucket
}) = _Account;
factory Account.fromJson(Map<String, dynamic> json) =>
_$AccountFromJson(json);
Map<String, dynamic> toJson() => _$AccountToJson(this);
}

View File

@ -0,0 +1,300 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target
part of 'account.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
Account _$AccountFromJson(Map<String, dynamic> json) {
return _Account.fromJson(json);
}
/// @nodoc
mixin _$Account {
String get platform => throw _privateConstructorUsedError;
String get domain => throw _privateConstructorUsedError;
String get token => throw _privateConstructorUsedError;
String get login => throw _privateConstructorUsedError;
String get avatarUrl => throw _privateConstructorUsedError;
int? get gitlabId => throw _privateConstructorUsedError; // For GitLab
String? get appPassword =>
throw _privateConstructorUsedError; // For Bitbucket
String? get accountId => throw _privateConstructorUsedError;
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$AccountCopyWith<Account> get copyWith => throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $AccountCopyWith<$Res> {
factory $AccountCopyWith(Account value, $Res Function(Account) then) =
_$AccountCopyWithImpl<$Res, Account>;
@useResult
$Res call(
{String platform,
String domain,
String token,
String login,
String avatarUrl,
int? gitlabId,
String? appPassword,
String? accountId});
}
/// @nodoc
class _$AccountCopyWithImpl<$Res, $Val extends Account>
implements $AccountCopyWith<$Res> {
_$AccountCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
@pragma('vm:prefer-inline')
@override
$Res call({
Object? platform = null,
Object? domain = null,
Object? token = null,
Object? login = null,
Object? avatarUrl = null,
Object? gitlabId = freezed,
Object? appPassword = freezed,
Object? accountId = freezed,
}) {
return _then(_value.copyWith(
platform: null == platform
? _value.platform
: platform // ignore: cast_nullable_to_non_nullable
as String,
domain: null == domain
? _value.domain
: domain // ignore: cast_nullable_to_non_nullable
as String,
token: null == token
? _value.token
: token // ignore: cast_nullable_to_non_nullable
as String,
login: null == login
? _value.login
: login // ignore: cast_nullable_to_non_nullable
as String,
avatarUrl: null == avatarUrl
? _value.avatarUrl
: avatarUrl // ignore: cast_nullable_to_non_nullable
as String,
gitlabId: freezed == gitlabId
? _value.gitlabId
: gitlabId // ignore: cast_nullable_to_non_nullable
as int?,
appPassword: freezed == appPassword
? _value.appPassword
: appPassword // ignore: cast_nullable_to_non_nullable
as String?,
accountId: freezed == accountId
? _value.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as String?,
) as $Val);
}
}
/// @nodoc
abstract class _$$_AccountCopyWith<$Res> implements $AccountCopyWith<$Res> {
factory _$$_AccountCopyWith(
_$_Account value, $Res Function(_$_Account) then) =
__$$_AccountCopyWithImpl<$Res>;
@override
@useResult
$Res call(
{String platform,
String domain,
String token,
String login,
String avatarUrl,
int? gitlabId,
String? appPassword,
String? accountId});
}
/// @nodoc
class __$$_AccountCopyWithImpl<$Res>
extends _$AccountCopyWithImpl<$Res, _$_Account>
implements _$$_AccountCopyWith<$Res> {
__$$_AccountCopyWithImpl(_$_Account _value, $Res Function(_$_Account) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? platform = null,
Object? domain = null,
Object? token = null,
Object? login = null,
Object? avatarUrl = null,
Object? gitlabId = freezed,
Object? appPassword = freezed,
Object? accountId = freezed,
}) {
return _then(_$_Account(
platform: null == platform
? _value.platform
: platform // ignore: cast_nullable_to_non_nullable
as String,
domain: null == domain
? _value.domain
: domain // ignore: cast_nullable_to_non_nullable
as String,
token: null == token
? _value.token
: token // ignore: cast_nullable_to_non_nullable
as String,
login: null == login
? _value.login
: login // ignore: cast_nullable_to_non_nullable
as String,
avatarUrl: null == avatarUrl
? _value.avatarUrl
: avatarUrl // ignore: cast_nullable_to_non_nullable
as String,
gitlabId: freezed == gitlabId
? _value.gitlabId
: gitlabId // ignore: cast_nullable_to_non_nullable
as int?,
appPassword: freezed == appPassword
? _value.appPassword
: appPassword // ignore: cast_nullable_to_non_nullable
as String?,
accountId: freezed == accountId
? _value.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
/// @nodoc
@JsonSerializable(includeIfNull: false)
class _$_Account implements _Account {
_$_Account(
{required this.platform,
required this.domain,
required this.token,
required this.login,
required this.avatarUrl,
this.gitlabId,
this.appPassword,
this.accountId});
factory _$_Account.fromJson(Map<String, dynamic> json) =>
_$$_AccountFromJson(json);
@override
final String platform;
@override
final String domain;
@override
final String token;
@override
final String login;
@override
final String avatarUrl;
@override
final int? gitlabId;
// For GitLab
@override
final String? appPassword;
// For Bitbucket
@override
final String? accountId;
@override
String toString() {
return 'Account(platform: $platform, domain: $domain, token: $token, login: $login, avatarUrl: $avatarUrl, gitlabId: $gitlabId, appPassword: $appPassword, accountId: $accountId)';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$_Account &&
(identical(other.platform, platform) ||
other.platform == platform) &&
(identical(other.domain, domain) || other.domain == domain) &&
(identical(other.token, token) || other.token == token) &&
(identical(other.login, login) || other.login == login) &&
(identical(other.avatarUrl, avatarUrl) ||
other.avatarUrl == avatarUrl) &&
(identical(other.gitlabId, gitlabId) ||
other.gitlabId == gitlabId) &&
(identical(other.appPassword, appPassword) ||
other.appPassword == appPassword) &&
(identical(other.accountId, accountId) ||
other.accountId == accountId));
}
@JsonKey(ignore: true)
@override
int get hashCode => Object.hash(runtimeType, platform, domain, token, login,
avatarUrl, gitlabId, appPassword, accountId);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$_AccountCopyWith<_$_Account> get copyWith =>
__$$_AccountCopyWithImpl<_$_Account>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$_AccountToJson(
this,
);
}
}
abstract class _Account implements Account {
factory _Account(
{required final String platform,
required final String domain,
required final String token,
required final String login,
required final String avatarUrl,
final int? gitlabId,
final String? appPassword,
final String? accountId}) = _$_Account;
factory _Account.fromJson(Map<String, dynamic> json) = _$_Account.fromJson;
@override
String get platform;
@override
String get domain;
@override
String get token;
@override
String get login;
@override
String get avatarUrl;
@override
int? get gitlabId;
@override // For GitLab
String? get appPassword;
@override // For Bitbucket
String? get accountId;
@override
@JsonKey(ignore: true)
_$$_AccountCopyWith<_$_Account> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -6,21 +6,25 @@ part of 'account.dart';
// JsonSerializableGenerator
// **************************************************************************
Account _$AccountFromJson(Map<String, dynamic> json) {
return Account(
platform: json['platform'] as String,
domain: json['domain'] as String,
token: json['token'] as String,
login: json['login'] as String,
avatarUrl: json['avatarUrl'] as String,
gitlabId: json['gitlabId'] as int,
appPassword: json['appPassword'] as String,
accountId: json['accountId'] as String,
);
}
_$_Account _$$_AccountFromJson(Map<String, dynamic> json) => _$_Account(
platform: json['platform'] as String,
domain: json['domain'] as String,
token: json['token'] as String,
login: json['login'] as String,
avatarUrl: json['avatarUrl'] as String,
gitlabId: json['gitlabId'] as int?,
appPassword: json['appPassword'] as String?,
accountId: json['accountId'] as String?,
);
Map<String, dynamic> _$AccountToJson(Account instance) {
final val = <String, dynamic>{};
Map<String, dynamic> _$$_AccountToJson(_$_Account instance) {
final val = <String, dynamic>{
'platform': instance.platform,
'domain': instance.domain,
'token': instance.token,
'login': instance.login,
'avatarUrl': instance.avatarUrl,
};
void writeNotNull(String key, dynamic value) {
if (value != null) {
@ -28,11 +32,6 @@ Map<String, dynamic> _$AccountToJson(Account instance) {
}
}
writeNotNull('platform', instance.platform);
writeNotNull('domain', instance.domain);
writeNotNull('token', instance.token);
writeNotNull('login', instance.login);
writeNotNull('avatarUrl', instance.avatarUrl);
writeNotNull('gitlabId', instance.gitlabId);
writeNotNull('appPassword', instance.appPassword);
writeNotNull('accountId', instance.accountId);

View File

@ -1,25 +1,26 @@
import 'dart:convert';
import 'dart:async';
// import 'package:in_app_review/in_app_review.dart';
import 'package:universal_io/io.dart';
import 'dart:convert';
import 'package:ferry/ferry.dart';
import 'package:fimber/fimber.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/models/account.dart';
import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/utils/request_serilizer.dart';
import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/models/gogs.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:github/github.dart';
import 'package:gql_http_link/gql_http_link.dart';
import 'package:artemis/artemis.dart';
import 'package:fimber/fimber.dart';
import 'package:http/http.dart' as http;
import 'package:uni_links/uni_links.dart';
import 'package:nanoid/nanoid.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../utils/utils.dart';
import 'account.dart';
import 'gitlab.dart';
import 'package:uni_links/uni_links.dart';
// import 'package:in_app_review/in_app_review.dart';
import 'package:universal_io/io.dart';
import 'package:url_launcher/url_launcher.dart';
const clientId = 'df930d7d2e219f26142a';
@ -29,32 +30,20 @@ class PlatformType {
static const bitbucket = 'bitbucket';
static const gitea = 'gitea';
static const gitee = 'gitee';
static const gogs = 'gogs';
}
class DataWithPage<T> {
DataWithPage({
required this.data,
required this.cursor,
required this.hasMore,
required this.total,
});
T data;
int cursor;
bool hasMore;
int total;
DataWithPage({
@required this.data,
@required this.cursor,
@required this.hasMore,
this.total,
});
}
class BbPagePayload<T> {
T data;
String cursor;
bool hasMore;
int total;
BbPagePayload({
@required this.data,
@required this.cursor,
@required this.hasMore,
this.total,
});
}
class AuthModel with ChangeNotifier {
@ -63,21 +52,21 @@ class AuthModel with ChangeNotifier {
// static final inAppReview = InAppReview.instance;
var hasRequestedReview = false;
List<Account> _accounts;
int activeAccountIndex;
StreamSubscription<Uri> _sub;
List<Account> _accounts = [];
int? activeAccountIndex;
late StreamSubscription<Uri?> _sub;
bool loading = false;
List<Account> get accounts => _accounts;
Account get activeAccount {
if (activeAccountIndex == null || _accounts == null) return null;
return _accounts[activeAccountIndex];
List<Account>? get accounts => _accounts;
Account? get activeAccount {
if (activeAccountIndex == null || _accounts.isEmpty) return null;
return _accounts[activeAccountIndex!];
}
String get token => activeAccount.token;
String get token => activeAccount!.token;
_addAccount(Account account) async {
_accounts = [...accounts, account];
_accounts = [...accounts!, account];
// Save
final prefs = await SharedPreferences.getInstance();
await prefs.setString(StorageKeys.accounts, json.encode(_accounts));
@ -95,22 +84,22 @@ class AuthModel with ChangeNotifier {
}
// https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow
Future<void> _onSchemeDetected(Uri uri) async {
await closeWebView();
Future<void> _onSchemeDetected(Uri? uri) async {
await closeInAppWebView();
loading = true;
notifyListeners();
// Get token by code
final res = await http.post(
'https://git-touch-oauth.now.sh/api/token',
Uri.parse('https://git-touch-oauth.vercel.app/api/token'),
headers: {
HttpHeaders.acceptHeader: 'application/json',
HttpHeaders.contentTypeHeader: 'application/json',
},
body: json.encode({
'client_id': clientId,
'code': uri.queryParameters['code'],
'code': uri!.queryParameters['code'],
'state': _oauthState,
}),
);
@ -118,7 +107,7 @@ class AuthModel with ChangeNotifier {
await loginWithToken(token);
}
Future<void> loginWithToken(String token) async {
Future<void> loginWithToken(String t) async {
try {
final queryData = await query('''
{
@ -127,12 +116,12 @@ class AuthModel with ChangeNotifier {
avatarUrl
}
}
''', token);
''', t);
await _addAccount(Account(
platform: PlatformType.github,
domain: 'https://github.com',
token: token,
token: t,
login: queryData['viewer']['login'] as String,
avatarUrl: queryData['viewer']['avatarUrl'] as String,
));
@ -148,26 +137,22 @@ class AuthModel with ChangeNotifier {
loading = true;
notifyListeners();
try {
final res = await http
.get('$domain/api/v4/user', headers: {'Private-Token': token});
final res = await http.get(Uri.parse('$domain/api/v4/user'),
headers: {'Private-Token': token});
final info = json.decode(res.body);
if (info['message'] != null) {
throw info['message'];
}
if (info['error'] != null) {
throw info['error'] +
'. ' +
(info['error_description'] != null
? info['error_description']
: '');
throw info['error'] + '. ' + (info['error_description'] ?? '');
}
final user = GitlabUser.fromJson(info);
await _addAccount(Account(
platform: PlatformType.gitlab,
domain: domain,
token: token,
login: user.username,
avatarUrl: user.avatarUrl,
login: user.username!,
avatarUrl: user.avatarUrl!,
gitlabId: user.id,
));
} finally {
@ -177,7 +162,7 @@ class AuthModel with ChangeNotifier {
}
Future<String> fetchWithGitlabToken(String p) async {
final res = await http.get(p, headers: {'Private-Token': token});
final res = await http.get(Uri.parse(p), headers: {'Private-Token': token});
return res.body;
}
@ -186,7 +171,7 @@ class AuthModel with ChangeNotifier {
http.Response res;
if (isPost) {
res = await http.post(
'${activeAccount.domain}/api/v4$p',
Uri.parse('${activeAccount!.domain}/api/v4$p'),
headers: {
'Private-Token': token,
HttpHeaders.contentTypeHeader: 'application/json'
@ -194,7 +179,7 @@ class AuthModel with ChangeNotifier {
body: jsonEncode(body),
);
} else {
res = await http.get('${activeAccount.domain}/api/v4$p',
res = await http.get(Uri.parse('${activeAccount!.domain}/api/v4$p'),
headers: {'Private-Token': token});
}
final info = json.decode(utf8.decode(res.bodyBytes));
@ -203,7 +188,7 @@ class AuthModel with ChangeNotifier {
}
Future<DataWithPage> fetchGitlabWithPage(String p) async {
final res = await http.get('${activeAccount.domain}/api/v4$p',
final res = await http.get(Uri.parse('${activeAccount!.domain}/api/v4$p'),
headers: {'Private-Token': token});
final next = int.tryParse(
res.headers['X-Next-Pages'] ?? res.headers['x-next-page'] ?? '');
@ -211,10 +196,11 @@ class AuthModel with ChangeNotifier {
if (info is Map && info['message'] != null) throw info['message'];
return DataWithPage(
data: info,
cursor: next,
cursor: next ?? 1,
hasMore: next != null,
total:
int.tryParse(res.headers['X-Total'] ?? res.headers['x-total'] ?? ''),
total: int.tryParse(
res.headers['X-Total'] ?? res.headers['x-total'] ?? '') ??
kTotalCountFallback,
);
}
@ -224,7 +210,7 @@ class AuthModel with ChangeNotifier {
try {
loading = true;
notifyListeners();
final res = await http.get('$domain/api/v1/user',
final res = await http.get(Uri.parse('$domain/api/v1/user'),
headers: {'Authorization': 'token $token'});
final info = json.decode(res.body);
if (info['message'] != null) {
@ -236,8 +222,8 @@ class AuthModel with ChangeNotifier {
platform: PlatformType.gitea,
domain: domain,
token: token,
login: user.login,
avatarUrl: user.avatarUrl,
login: user.login!,
avatarUrl: user.avatarUrl!,
));
} finally {
loading = false;
@ -250,8 +236,8 @@ class AuthModel with ChangeNotifier {
requestType = 'GET',
Map<String, dynamic> body = const {},
}) async {
http.Response res;
Map<String, String> headers = {
late http.Response res;
final headers = <String, String>{
'Authorization': 'token $token',
HttpHeaders.contentTypeHeader: 'application/json'
};
@ -259,7 +245,7 @@ class AuthModel with ChangeNotifier {
case 'DELETE':
{
await http.delete(
'${activeAccount.domain}/api/v1$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
);
break;
@ -267,7 +253,7 @@ class AuthModel with ChangeNotifier {
case 'POST':
{
res = await http.post(
'${activeAccount.domain}/api/v1$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
body: jsonEncode(body),
);
@ -276,7 +262,7 @@ class AuthModel with ChangeNotifier {
case 'PATCH':
{
res = await http.patch(
'${activeAccount.domain}/api/v1$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
body: jsonEncode(body),
);
@ -284,7 +270,7 @@ class AuthModel with ChangeNotifier {
}
default:
{
res = await http.get('${activeAccount.domain}/api/v1$p',
res = await http.get(Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers);
break;
}
@ -297,11 +283,11 @@ class AuthModel with ChangeNotifier {
}
Future<DataWithPage> fetchGiteaWithPage(String path,
{int page, int limit}) async {
{int? page, int? limit}) async {
page = page ?? 1;
limit = limit ?? pageSize;
limit = limit ?? kPageSize;
var uri = Uri.parse('${activeAccount.domain}/api/v1$path');
var uri = Uri.parse('${activeAccount!.domain}/api/v1$path');
uri = uri.replace(
queryParameters: {
'page': page.toString(),
@ -315,18 +301,47 @@ class AuthModel with ChangeNotifier {
return DataWithPage(
data: info,
cursor: page + 1,
hasMore: info is List && info.length > 0,
total: int.tryParse(res.headers['x-total-count'] ?? ''),
hasMore: info is List && info.isNotEmpty,
total: int.tryParse(res.headers['x-total-count'] ?? '') ??
kTotalCountFallback,
);
}
Future fetchGitee(
Future loginToGogs(String domain, String token) async {
domain = domain.trim();
token = token.trim();
try {
loading = true;
notifyListeners();
final res = await http.get(Uri.parse('$domain/api/v1/user'),
headers: {'Authorization': 'token $token'});
final info = json.decode(res.body);
if (info['message'] != null) {
throw info['message'];
}
final user = GogsUser.fromJson(info);
await _addAccount(Account(
platform: PlatformType.gogs,
domain: domain,
token: token,
login: user.username!,
avatarUrl: user.avatarUrl!,
));
} finally {
loading = false;
notifyListeners();
}
}
// TODO: refactor
Future fetchGogs(
String p, {
requestType = 'GET',
Map<String, dynamic> body = const {},
}) async {
http.Response res;
Map<String, String> headers = {
late http.Response res;
final headers = <String, String>{
'Authorization': 'token $token',
HttpHeaders.contentTypeHeader: 'application/json'
};
@ -334,7 +349,7 @@ class AuthModel with ChangeNotifier {
case 'DELETE':
{
await http.delete(
'${activeAccount.domain}/api/v5$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
);
break;
@ -342,7 +357,7 @@ class AuthModel with ChangeNotifier {
case 'POST':
{
res = await http.post(
'${activeAccount.domain}/api/v5$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
body: jsonEncode(body),
);
@ -351,7 +366,7 @@ class AuthModel with ChangeNotifier {
case 'PATCH':
{
res = await http.patch(
'${activeAccount.domain}/api/v5$p',
Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers,
body: jsonEncode(body),
);
@ -359,7 +374,7 @@ class AuthModel with ChangeNotifier {
}
default:
{
res = await http.get('${activeAccount.domain}/api/v5$p',
res = await http.get(Uri.parse('${activeAccount!.domain}/api/v1$p'),
headers: headers);
break;
}
@ -371,12 +386,99 @@ class AuthModel with ChangeNotifier {
return;
}
Future<DataWithPage> fetchGiteeWithPage(String path,
{int page, int limit}) async {
Future<DataWithPage> fetchGogsWithPage(String path,
{int? page, int? limit}) async {
page = page ?? 1;
limit = limit ?? pageSize;
limit = limit ?? kPageSize;
var uri = Uri.parse('${activeAccount.domain}/api/v5$path');
var uri = Uri.parse('${activeAccount!.domain}/api/v1$path');
uri = uri.replace(
queryParameters: {
'page': page.toString(),
'limit': limit.toString(),
...uri.queryParameters,
},
);
final res = await http.get(uri, headers: {'Authorization': 'token $token'});
final info = json.decode(utf8.decode(res.bodyBytes));
return DataWithPage(
data: info,
cursor: page + 1,
hasMore: info is List && info.isNotEmpty,
total: int.tryParse(res.headers['x-total-count'] ?? '') ??
kTotalCountFallback,
);
}
Future fetchGitee(
String p, {
requestType = 'GET',
Map<String, dynamic> body = const {},
}) async {
http.Response res;
final headers = <String, String>{
'Authorization': 'token $token',
HttpHeaders.contentTypeHeader: 'application/json'
};
switch (requestType) {
case 'DELETE':
{
await http.delete(
Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers,
);
return;
}
case 'PUT':
{
await http.put(
Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers,
);
return;
}
case 'POST':
{
res = await http.post(
Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers,
body: jsonEncode(body),
);
break;
}
case 'PATCH':
{
res = await http.patch(
Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers,
body: jsonEncode(body),
);
break;
}
case 'NO CONTENT':
{
res = await http.get(Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers);
return res;
}
default:
{
res = await http.get(Uri.parse('${activeAccount!.domain}/api/v5$p'),
headers: headers);
break;
}
}
final info = json.decode(utf8.decode(res.bodyBytes));
return info;
}
Future<DataWithPage> fetchGiteeWithPage(String path,
{int? page, int? limit}) async {
page = page ?? 1;
limit = limit ?? kPageSize;
var uri = Uri.parse('${activeAccount!.domain}/api/v5$path');
uri = uri.replace(
queryParameters: {
'page': page.toString(),
@ -388,7 +490,8 @@ class AuthModel with ChangeNotifier {
final info = json.decode(utf8.decode(res.bodyBytes));
final totalPage = int.tryParse(res.headers['total_page'] ?? '');
final totalCount = int.tryParse(res.headers['total_count'] ?? '');
final totalCount =
int.tryParse(res.headers['total_count'] ?? '') ?? kTotalCountFallback;
return DataWithPage(
data: info,
@ -416,9 +519,9 @@ class AuthModel with ChangeNotifier {
await _addAccount(Account(
platform: PlatformType.bitbucket,
domain: domain,
token: user.username,
token: user.username!,
login: username,
avatarUrl: user.avatarUrl,
avatarUrl: user.avatarUrl!,
appPassword: appPassword,
accountId: user.accountId,
));
@ -435,10 +538,13 @@ class AuthModel with ChangeNotifier {
}) async {
if (p.startsWith('/') && !p.startsWith('/api')) p = '/api/2.0$p';
final input = Uri.parse(p);
final uri = Uri.parse(activeAccount.domain).replace(
userInfo: '${activeAccount.login}:${activeAccount.appPassword}',
final uri = Uri.parse(activeAccount!.domain).replace(
userInfo: '${activeAccount!.login}:${activeAccount!.appPassword}',
path: input.path,
query: input.query,
queryParameters: {
'pagelen': kPageSize.toString(),
...input.queryParameters
},
);
if (isPost) {
return http.post(
@ -463,13 +569,12 @@ class AuthModel with ChangeNotifier {
return json.decode(utf8.decode(res.bodyBytes));
}
Future<BbPagePayload<List>> fetchBbWithPage(String p) async {
Future<ListPayload<dynamic, String?>> fetchBbWithPage(String p) async {
final data = await fetchBbJson(p);
final v = BbPagination.fromJson(data);
return BbPagePayload(
return ListPayload(
cursor: v.next,
total: v.size,
data: v.values,
items: v.values,
hasMore: v.next != null,
);
}
@ -479,7 +584,7 @@ class AuthModel with ChangeNotifier {
try {
loading = true;
notifyListeners();
final res = await http.get('https://gitee.com/api/v5/user',
final res = await http.get(Uri.parse('https://gitee.com/api/v5/user'),
headers: {'Authorization': 'token $token'});
final info = json.decode(res.body);
if (info['message'] != null) {
@ -491,8 +596,8 @@ class AuthModel with ChangeNotifier {
platform: PlatformType.gitee,
domain: 'https://gitee.com',
token: token,
login: user.login,
avatarUrl: user.avatarUrl,
login: user.login!,
avatarUrl: user.avatarUrl!,
));
} finally {
loading = false;
@ -502,19 +607,26 @@ class AuthModel with ChangeNotifier {
Future<void> init() async {
// Listen scheme
_sub = getUriLinksStream().listen(_onSchemeDetected, onError: (err) {
_sub = uriLinkStream.listen(_onSchemeDetected, onError: (err) {
Fimber.e('getUriLinksStream failed', ex: err);
});
var prefs = await SharedPreferences.getInstance();
final prefs = await SharedPreferences.getInstance();
// Read accounts
try {
String str = prefs.getString(StorageKeys.accounts);
final str = prefs.getString(StorageKeys.accounts);
// Fimber.d('read accounts: $str');
_accounts = (json.decode(str ?? '[]') as List)
.map((item) => Account.fromJson(item))
.toList();
activeAccountIndex = prefs.getInt(StorageKeys.iDefaultAccount);
if (activeAccount != null) {
_activeTab = prefs.getInt(
StorageKeys.getDefaultStartTabKey(activeAccount!.platform)) ??
0;
}
} catch (err) {
Fimber.e('prefs getAccount failed', ex: err);
_accounts = [];
@ -529,17 +641,31 @@ class AuthModel with ChangeNotifier {
super.dispose();
}
Future<void> setDefaultAccount(int v) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt(StorageKeys.iDefaultAccount, v);
Fimber.d('write default account: $v');
notifyListeners();
}
var rootKey = UniqueKey();
reloadApp() {
rootKey = UniqueKey();
notifyListeners();
}
setActiveAccountAndReload(int index) async {
// https://stackoverflow.com/a/50116077
rootKey = UniqueKey();
activeAccountIndex = index;
setDefaultAccount(activeAccountIndex!);
final prefs = await SharedPreferences.getInstance();
_activeTab = prefs.getInt(
StorageKeys.getDefaultStartTabKey(activeAccount.platform)) ??
StorageKeys.getDefaultStartTabKey(activeAccount!.platform)) ??
0;
_ghClient = null;
_gqlClient = null;
_ghGqlClient = null;
_glGqlClient = null;
notifyListeners();
// TODO: strategy
@ -555,47 +681,48 @@ class AuthModel with ChangeNotifier {
}
// http timeout
var _timeoutDuration = Duration(seconds: 10);
final _timeoutDuration = const Duration(seconds: 10);
// var _timeoutDuration = Duration(seconds: 1);
GitHub _ghClient;
GitHub? _ghClient;
GitHub get ghClient {
if (token == null) return null;
if (_ghClient == null) {
_ghClient = GitHub(auth: Authentication.withToken(token));
}
return _ghClient;
_ghClient ??= GitHub(auth: Authentication.withToken(token));
return _ghClient!;
}
ArtemisClient _gqlClient;
ArtemisClient get gqlClient {
if (token == null) return null;
if (_gqlClient == null) {
_gqlClient = ArtemisClient.fromLink(
HttpLink(
_apiPrefix + '/graphql',
defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'},
serializer: GithubRequestSerializer(),
),
);
}
return _gqlClient;
Client? _ghGqlClient;
Client get ghGqlClient {
return _ghGqlClient ??= Client(
link: HttpLink(
'$_apiPrefix/graphql',
defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'},
),
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
defaultFetchPolicies: {OperationType.query: FetchPolicy.NetworkOnly},
);
}
Future<dynamic> query(String query, [String _token]) async {
if (_token == null) {
_token = token;
}
if (_token == null) {
throw 'token is null';
}
Client? _glGqlClient;
Client get glGqlClient {
return _glGqlClient ??= Client(
link: HttpLink(
Uri.parse(activeAccount!.domain)
.replace(path: '/api/graphql')
.toString(),
defaultHeaders: {'Private-Token': token},
),
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
defaultFetchPolicies: {OperationType.query: FetchPolicy.NetworkOnly},
);
}
Future<dynamic> query(String query, [String? t]) async {
t ??= token;
final res = await http
.post(_apiPrefix + '/graphql',
.post(Uri.parse('$_apiPrefix/graphql'),
headers: {
HttpHeaders.authorizationHeader: 'token $_token',
HttpHeaders.authorizationHeader: 'token $t',
HttpHeaders.contentTypeHeader: 'application/json'
},
body: json.encode({'query': query}))
@ -611,11 +738,13 @@ class AuthModel with ChangeNotifier {
return data['data'];
}
String _oauthState;
void redirectToGithubOauth() {
String? _oauthState;
void redirectToGithubOauth([publicOnly = false]) {
_oauthState = nanoid();
var scope = Uri.encodeComponent('user,repo,read:org,notifications');
launchUrl(
final repoScope = publicOnly ? 'public_repo' : 'repo';
final scope = Uri.encodeComponent(
['user', repoScope, 'read:org', 'notifications'].join(','));
launchStringUrl(
'https://github.com/login/oauth/authorize?client_id=$clientId&redirect_uri=gittouch://login&scope=$scope&state=$_oauthState',
);
}
@ -627,8 +756,8 @@ class AuthModel with ChangeNotifier {
_activeTab = v;
final prefs = await SharedPreferences.getInstance();
await prefs.setInt(
StorageKeys.getDefaultStartTabKey(activeAccount.platform), v);
Fimber.d('write default start tab for ${activeAccount.platform}: $v');
StorageKeys.getDefaultStartTabKey(activeAccount!.platform), v);
Fimber.d('write default start tab for ${activeAccount!.platform}: $v');
notifyListeners();
}
}

View File

@ -1,146 +1,153 @@
import 'package:json_annotation/json_annotation.dart';
part 'bitbucket.g.dart';
@JsonSerializable(fieldRename: FieldRename.snake)
class BbPagination {
int pagelen;
int size;
int page;
String next;
List values;
BbPagination();
BbPagination({required this.values});
factory BbPagination.fromJson(Map<String, dynamic> json) =>
_$BbPaginationFromJson(json);
String? next;
List values;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbRepoOwner {
String nickname;
String displayName;
String type; // user, team
Map<String, dynamic> links;
String get avatarUrl => links['avatar']['href'];
BbRepoOwner();
factory BbRepoOwner.fromJson(Map<String, dynamic> json) =>
_$BbRepoOwnerFromJson(json);
String? nickname;
String? displayName;
String? type; // user, team
Map<String, dynamic>? links;
String? get avatarUrl => links!['avatar']['href'];
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbUser extends BbRepoOwner {
String username;
bool isStaff;
DateTime createdOn;
String accountId;
BbUser();
factory BbUser.fromJson(Map<String, dynamic> json) => _$BbUserFromJson(json);
String? username;
bool? isStaff;
DateTime? createdOn;
String? accountId;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbRepo {
String name;
BbRepoOwner owner;
String website;
String language;
int size;
String type; // repository
bool isPrivate;
DateTime createdOn;
DateTime updatedOn;
String description;
String fullName;
String slug;
BbRepoMainbranch mainbranch;
Map<String, dynamic> links;
String get ownerLogin => fullName.split('/')[0]; // owner has no username
String get avatarUrl => links['avatar']['href'];
BbRepo();
factory BbRepo.fromJson(Map<String, dynamic> json) => _$BbRepoFromJson(json);
String? name;
BbRepoOwner? owner;
String? website;
String? language;
int? size;
String? type; // repository
bool? isPrivate;
DateTime? createdOn;
DateTime? updatedOn;
String? description;
String? fullName;
String? slug;
BbRepoMainbranch? mainbranch;
Map<String, dynamic>? links;
String get ownerLogin => fullName!.split('/')[0]; // owner has no username
String? get avatarUrl => links!['avatar']['href'];
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbRepoMainbranch {
String type;
String name;
BbRepoMainbranch();
factory BbRepoMainbranch.fromJson(Map<String, dynamic> json) =>
_$BbRepoMainbranchFromJson(json);
String? type;
String? name;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbTree {
BbTree({required this.type, required this.path});
factory BbTree.fromJson(Map<String, dynamic> json) => _$BbTreeFromJson(json);
String type;
String path;
int size;
Map<String, dynamic> links;
BbTree();
factory BbTree.fromJson(Map<String, dynamic> json) => _$BbTreeFromJson(json);
int? size;
Map<String, dynamic>? links;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbCommit {
String message;
DateTime date;
String hash;
BbCommitAuthor author;
BbCommit();
factory BbCommit.fromJson(Map<String, dynamic> json) =>
_$BbCommitFromJson(json);
String? message;
DateTime? date;
String? hash;
BbCommitAuthor? author;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbCommitAuthor {
String raw;
BbRepoOwner user;
BbCommitAuthor();
factory BbCommitAuthor.fromJson(Map<String, dynamic> json) =>
_$BbCommitAuthorFromJson(json);
String? raw;
BbRepoOwner? user;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbIssues {
String priority;
String state;
BbRepo repository;
String title;
BbRepoOwner reporter;
DateTime createdOn;
Map<String, dynamic> links;
String get issueLink => links['self']['href'];
BbIssues();
factory BbIssues.fromJson(Map<String, dynamic> json) =>
_$BbIssuesFromJson(json);
String? priority;
String? state;
BbRepo? repository;
String? title;
BbRepoOwner? reporter;
DateTime? createdOn;
Map<String, dynamic>? links;
String? get issueLink => links!['self']['href'];
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbPulls {
String description;
BbRepoOwner author;
String title;
Map<String, dynamic> links;
String get pullRequestLink => links['self']['href'];
DateTime createdOn;
BbPulls();
factory BbPulls.fromJson(Map<String, dynamic> json) =>
_$BbPullsFromJson(json);
String? description;
BbRepoOwner? author;
String? title;
Map<String, dynamic>? links;
String? get pullRequestLink => links!['self']['href'];
DateTime? createdOn;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbCommentContent {
String raw;
String markup;
String html;
BbCommentContent();
factory BbCommentContent.fromJson(Map<String, dynamic> json) =>
_$BbCommentContentFromJson(json);
String? raw;
String? markup;
String? html;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbComment {
String createdOn;
String updatedOn;
BbCommentContent content;
BbRepoOwner user;
BbComment();
factory BbComment.fromJson(Map<String, dynamic> json) =>
_$BbCommentFromJson(json);
String? createdOn;
String? updatedOn;
BbCommentContent? content;
BbRepoOwner? user;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class BbBranch {
BbBranch();
factory BbBranch.fromJson(Map<String, dynamic> json) =>
_$BbBranchFromJson(json);
String? name;
String? type;
}

Some files were not shown because too many files have changed in this diff Show More