From 6360f03986e85ccec4e9c23780dbddd2c71c0a86 Mon Sep 17 00:00:00 2001 From: Kosh Date: Mon, 10 Jul 2017 22:18:03 +0800 Subject: [PATCH] fixed multi acc switch & checkpoint WIP for enterprise. --- README.md | 5 +- app/build.gradle | 1 - app/src/debug/res/mipmap-hdpi/ic_launcher.png | Bin app/src/debug/res/mipmap-mdpi/ic_launcher.png | Bin .../debug/res/mipmap-xhdpi/ic_launcher.png | Bin .../debug/res/mipmap-xxhdpi/ic_launcher.png | Bin .../debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin app/src/main/AndroidManifest.xml | 134 ++++++++------- app/src/main/assets/colors.json | 0 app/src/main/assets/emojis.json | 0 app/src/main/assets/fonts/app_font.ttf | Bin .../assets/highlight/styles/themes/agate.css | 0 .../highlight/styles/themes/androidstudio.css | 0 .../highlight/styles/themes/arduino-light.css | 0 .../assets/highlight/styles/themes/arta.css | 0 .../highlight/styles/themes/ascetic.css | 0 .../styles/themes/atelier-cave-dark.css | 0 .../styles/themes/atelier-cave-light.css | 0 .../styles/themes/atelier-dune-dark.css | 0 .../styles/themes/atelier-dune-light.css | 0 .../styles/themes/atelier-estuary-dark.css | 0 .../styles/themes/atelier-estuary-light.css | 0 .../styles/themes/atelier-forest-dark.css | 0 .../styles/themes/atelier-forest-light.css | 0 .../styles/themes/atelier-heath-dark.css | 0 .../styles/themes/atelier-heath-light.css | 0 .../styles/themes/atelier-lakeside-dark.css | 0 .../styles/themes/atelier-lakeside-light.css | 0 .../styles/themes/atelier-plateau-dark.css | 0 .../styles/themes/atelier-plateau-light.css | 0 .../styles/themes/atelier-savanna-dark.css | 0 .../styles/themes/atelier-savanna-light.css | 0 .../styles/themes/atelier-seaside-dark.css | 0 .../styles/themes/atelier-seaside-light.css | 0 .../themes/atelier-sulphurpool-dark.css | 0 .../themes/atelier-sulphurpool-light.css | 0 .../highlight/styles/themes/atom-one-dark.css | 0 .../styles/themes/atom-one-light.css | 0 .../highlight/styles/themes/brown-paper.css | 0 .../highlight/styles/themes/codepen-embed.css | 0 .../highlight/styles/themes/color-brewer.css | 0 .../highlight/styles/themes/darcula.css | 0 .../assets/highlight/styles/themes/dark.css | 0 .../highlight/styles/themes/darkula.css | 0 .../highlight/styles/themes/default.css | 0 .../assets/highlight/styles/themes/docco.css | 0 .../highlight/styles/themes/dracula.css | 0 .../assets/highlight/styles/themes/far.css | 0 .../highlight/styles/themes/foundation.css | 0 .../highlight/styles/themes/github-gist.css | 0 .../assets/highlight/styles/themes/github.css | 0 .../highlight/styles/themes/googlecode.css | 0 .../highlight/styles/themes/grayscale.css | 0 .../highlight/styles/themes/gruvbox-dark.css | 0 .../highlight/styles/themes/gruvbox-light.css | 0 .../highlight/styles/themes/hopscotch.css | 0 .../assets/highlight/styles/themes/hybrid.css | 0 .../assets/highlight/styles/themes/idea.css | 0 .../highlight/styles/themes/ir-black.css | 0 .../highlight/styles/themes/kimbie.dark.css | 0 .../highlight/styles/themes/kimbie.light.css | 0 .../assets/highlight/styles/themes/magula.css | 0 .../highlight/styles/themes/mono-blue.css | 0 .../styles/themes/monokai-sublime.css | 0 .../highlight/styles/themes/monokai.css | 0 .../highlight/styles/themes/obsidian.css | 0 .../assets/highlight/styles/themes/ocean.css | 0 .../highlight/styles/themes/paraiso-dark.css | 0 .../highlight/styles/themes/paraiso-light.css | 0 .../highlight/styles/themes/pojoaque.css | 0 .../highlight/styles/themes/purebasic.css | 0 .../styles/themes/qtcreator_dark.css | 0 .../styles/themes/qtcreator_light.css | 0 .../highlight/styles/themes/railscasts.css | 0 .../highlight/styles/themes/rainbow.css | 0 .../highlight/styles/themes/routeros.css | 0 .../highlight/styles/themes/school-book.css | 0 .../styles/themes/solarized-dark.css | 0 .../styles/themes/solarized-light.css | 0 .../highlight/styles/themes/sunburst.css | 0 .../styles/themes/tomorrow-night-blue.css | 0 .../styles/themes/tomorrow-night-bright.css | 0 .../styles/themes/tomorrow-night-eighties.css | 0 .../styles/themes/tomorrow-night.css | 0 .../highlight/styles/themes/tomorrow.css | 0 .../assets/highlight/styles/themes/vs.css | 0 .../assets/highlight/styles/themes/vs2015.css | 0 .../assets/highlight/styles/themes/xcode.css | 0 .../assets/highlight/styles/themes/xt256.css | 0 .../highlight/styles/themes/zenburn.css | 0 app/src/main/assets/md/github.css | 0 app/src/main/assets/md/github_dark.css | 0 .../data/dao/GroupedNotificationModel.java | 2 +- .../data/dao/model/AbstractLogin.java | 67 ++++++-- .../com/fastaccess/helper/ActivityHelper.java | 95 ++-------- .../com/fastaccess/helper/PrefGetter.java | 6 + .../com/fastaccess/provider/emoji/Emoji.java | 0 .../provider/emoji/EmojiLoader.java | 0 .../provider/emoji/EmojiManager.java | 0 .../provider/emoji/EmojiParser.java | 0 .../fastaccess/provider/emoji/EmojiTrie.java | 0 .../provider/emoji/Fitzpatrick.java | 0 .../provider/scheme/LinkParserHelper.java | 26 +-- .../provider/scheme/SchemeParser.java | 23 ++- .../NotificationSchedulerJobTask.java | 2 +- .../fastaccess/provider/theme/ThemeEngine.kt | 56 +++--- .../viewholder/AssigneesViewHolder.java | 4 +- .../viewholder/CommentsViewHolder.java | 2 +- .../adapter/viewholder/CommitsViewHolder.java | 2 +- .../adapter/viewholder/FeedsViewHolder.java | 2 +- .../adapter/viewholder/GistsViewHolder.java | 2 +- .../viewholder/IssueDetailsViewHolder.java | 2 +- .../adapter/viewholder/IssuesViewHolder.java | 2 +- .../viewholder/PinnedReposViewHolder.java | 2 +- .../viewholder/ProfileOrgsViewHolder.java | 2 +- .../viewholder/PullRequestViewHolder.java | 2 +- .../viewholder/PullStatusViewHolder.java | 3 +- .../adapter/viewholder/ReposViewHolder.java | 2 +- .../viewholder/ReviewCommentsViewHolder.java | 2 +- .../adapter/viewholder/ReviewsViewHolder.java | 2 +- .../TimelineCommentsViewHolder.java | 2 +- .../adapter/viewholder/UsersViewHolder.java | 2 +- .../com/fastaccess/ui/base/BaseActivity.java | 13 +- .../ui/base/BaseDialogFragment.java | 2 +- .../com/fastaccess/ui/base/BaseFragment.java | 2 +- .../com/fastaccess/ui/base/MainNavDrawer.kt | 23 +-- .../ui/base/mvp/presenter/BasePresenter.java | 1 + .../ui/modules/editor/EditorActivity.java | 26 +-- .../ui/modules/feeds/FeedsPresenter.java | 8 +- .../ui/modules/gists/gist/GistActivity.java | 4 +- .../ui/modules/login/LoginActivity.java | 162 ++++++------------ .../modules/login/LoginChooserActivity.java | 73 +++++++- .../fastaccess/ui/modules/login/LoginMvp.java | 2 +- .../ui/modules/login/LoginPresenter.java | 70 +++----- .../ui/modules/main/MainPresenter.java | 6 + .../notification/NotificationActivity.java | 22 ++- .../all/AllNotificationsFragment.java | 26 ++- .../notification/all/AllNotificationsMvp.java | 2 + .../OnNotificationChangedListener.java | 10 ++ .../unread/UnreadNotificationMvp.java | 2 + .../unread/UnreadNotificationsFragment.java | 29 +++- .../modules/parser/LinksParserActivity.java | 27 ++- .../ui/modules/repos/RepoPagerActivity.java | 102 ++--------- .../commit/details/CommitPagerActivity.java | 2 +- .../repos/code/files/RepoFilesFragment.java | 32 ---- .../code/releases/RepoReleasesFragment.java | 32 ---- .../issue/details/IssuePagerActivity.java | 8 +- .../issue/details/IssuePagerPresenter.java | 2 + .../ui/modules/user/UserPagerActivity.java | 1 - .../ui/widgets/ForegroundImageView.java | 18 +- .../scroll/RecyclerFastScroller.java | 0 .../prettifier/pretty/PrettifyWebView.java | 0 .../pretty/helper/GithubHelper.java | 0 .../pretty/helper/PrettifyHelper.java | 0 .../com/zzhoujay/markdown/style/CodeSpan.java | 0 .../com/zzhoujay/markdown/style/FontSpan.java | 0 .../com/zzhoujay/markdown/style/LinkSpan.java | 0 .../markdown/style/MarkDownQuoteSpan.java | 0 .../res/drawable-nodpi/web_hi_res_512.png | Bin .../res/drawable-xxxhdpi/ic_edittext.9.png | Bin .../ic_timeline_arrow_left.9.png | Bin .../other_layouts/layout/drawer_header.xml | 68 ++++---- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin app/src/main/res/mipmap-nodpi/foreground.png | Bin app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin app/src/main/res/values-land/dimens.xml | 0 .../main/res/values-w820dp-land/dimens.xml | 0 app/src/main/res/values-w820dp/dimens.xml | 0 171 files changed, 560 insertions(+), 667 deletions(-) mode change 100755 => 100644 app/src/debug/res/mipmap-hdpi/ic_launcher.png mode change 100755 => 100644 app/src/debug/res/mipmap-mdpi/ic_launcher.png mode change 100755 => 100644 app/src/debug/res/mipmap-xhdpi/ic_launcher.png mode change 100755 => 100644 app/src/debug/res/mipmap-xxhdpi/ic_launcher.png mode change 100755 => 100644 app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/assets/colors.json mode change 100755 => 100644 app/src/main/assets/emojis.json mode change 100755 => 100644 app/src/main/assets/fonts/app_font.ttf mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/agate.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/androidstudio.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/arduino-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/arta.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/ascetic.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-cave-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-dune-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-forest-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-heath-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atom-one-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/atom-one-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/brown-paper.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/codepen-embed.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/color-brewer.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/darcula.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/darkula.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/default.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/docco.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/dracula.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/far.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/foundation.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/github-gist.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/github.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/googlecode.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/grayscale.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/gruvbox-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/gruvbox-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/hopscotch.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/hybrid.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/idea.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/ir-black.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/kimbie.dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/kimbie.light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/magula.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/mono-blue.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/monokai-sublime.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/monokai.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/obsidian.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/ocean.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/paraiso-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/paraiso-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/pojoaque.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/purebasic.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/qtcreator_dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/qtcreator_light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/railscasts.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/rainbow.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/routeros.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/school-book.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/solarized-dark.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/solarized-light.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/sunburst.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/tomorrow-night.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/tomorrow.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/vs.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/vs2015.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/xcode.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/xt256.css mode change 100755 => 100644 app/src/main/assets/highlight/styles/themes/zenburn.css mode change 100755 => 100644 app/src/main/assets/md/github.css mode change 100755 => 100644 app/src/main/assets/md/github_dark.css mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/Emoji.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/EmojiLoader.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/EmojiManager.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/EmojiParser.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/EmojiTrie.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/provider/emoji/Fitzpatrick.java create mode 100644 app/src/main/java/com/fastaccess/ui/modules/notification/callback/OnNotificationChangedListener.java mode change 100755 => 100644 app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/RecyclerFastScroller.java mode change 100755 => 100644 app/src/main/java/com/prettifier/pretty/PrettifyWebView.java mode change 100755 => 100644 app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java mode change 100755 => 100644 app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java mode change 100755 => 100644 app/src/main/java/com/zzhoujay/markdown/style/CodeSpan.java mode change 100755 => 100644 app/src/main/java/com/zzhoujay/markdown/style/FontSpan.java mode change 100755 => 100644 app/src/main/java/com/zzhoujay/markdown/style/LinkSpan.java mode change 100755 => 100644 app/src/main/java/com/zzhoujay/markdown/style/MarkDownQuoteSpan.java mode change 100755 => 100644 app/src/main/res/drawable-nodpi/web_hi_res_512.png mode change 100755 => 100644 app/src/main/res/drawable-xxxhdpi/ic_edittext.9.png mode change 100755 => 100644 app/src/main/res/drawable-xxxhdpi/ic_timeline_arrow_left.9.png mode change 100755 => 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/res/mipmap-nodpi/foreground.png mode change 100755 => 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png mode change 100755 => 100644 app/src/main/res/values-land/dimens.xml mode change 100755 => 100644 app/src/main/res/values-w820dp-land/dimens.xml mode change 100755 => 100644 app/src/main/res/values-w820dp/dimens.xml diff --git a/README.md b/README.md index e209d90a..a3c9d7dc 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,6 @@ _Ads currently not available._ - [**commonmark**](https://github.com/atlassian/commonmark-java) for _Markdown_ conversion to html - [**Toasty**](https://github.com/GrenderG/Toasty) for displaying error/success messages - [**ShapedImageView**](https://github.com/gavinliu/ShapedImageView) for round avatars -- [**MaterialTapTargetPrompt**](https://github.com/sjwall/MaterialTapTargetPrompt) for displaying tips throughout the app - [**Material-About-Library**](https://github.com/daniel-stoneuk/material-about-library) for the about screen - **Fabric** analytics & crash reporting. - **Android Support Libraries**, the almighty ;-) @@ -144,7 +143,9 @@ Read the [**contribution guide**](.github/CONTRIBUTING.md) for more detailed inf
I login with Enterprise account but can't interact with anything other than my Enterprise GitHub

Well, logically, you can't access anything else other than your Enterprise, but FastHub made that possible but can't do much about it, - in most cases since your login credential doesn't exists in GitHub server. But in few cases your Oauth token will do the trick.

+ in most cases since your login credential doesn't exists in GitHub server. But in few + cases your GitHub account Oauth token will do the trick.

+
diff --git a/app/build.gradle b/app/build.gradle index 5ac17bf4..435b8f39 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -136,7 +136,6 @@ dependencies { implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' implementation 'com.annimon:stream:1.1.7' implementation 'com.github.GrenderG:Toasty:1.1.3' - implementation 'com.github.JediBurrell:MaterialTapTargetPrompt:-SNAPSHOT' implementation 'com.github.k0shk0sh:RetainedDateTimePickers:1.0.2' implementation 'com.github.daniel-stoneuk:material-about-library:2.1.0' implementation "io.requery:requery:${requery}" diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/app/src/debug/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/app/src/debug/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 49c1117c..7d22dcae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,17 +1,17 @@ - + - - - - - + + + + + + android:resource="@drawable/ic_notification" /> - + - + - + - - + + + android:scheme="fasthub" /> + android:theme="@style/LoginTheme" /> + android:value=".ui.modules.main.MainActivity" /> + android:value=".ui.modules.main.MainActivity" /> + android:value=".ui.modules.repos.RepoPagerActivity" /> + android:label="@string/create_issue" /> + android:value=".ui.modules.repos.RepoPagerActivity" /> + android:value=".ui.modules.repos.RepoPagerActivity" /> + android:label="@string/viewer" /> + android:label="@string/markdown" /> + android:label="@string/create_gist" /> + android:value=".ui.modules.main.MainActivity" /> + android:value=".ui.modules.main.MainActivity" /> + android:value=".ui.modules.main.MainActivity" /> + android:theme="@style/AppTheme.AboutActivity.Light" /> + android:label="@string/pinned" /> - + android:label="@string/public_gists" /> + + android:value=".ui.modules.repos.RepoPagerActivity" /> - - - + + + + android:value=".ui.modules.repos.RepoPagerActivity" /> - - + + + android:value=".ui.modules.repos.RepoPagerActivity" /> + android:value=".ui.modules.main.MainActivity" /> - + + android:label="@string/theme_title" /> + android:theme="@style/ThemeTranslucent" /> + android:theme="@style/ThemeTranslucent" /> + android:value=".ui.modules.repos.RepoPagerActivity" /> - + + android:scheme="http" /> + android:scheme="https" /> + android:scheme="http" /> + android:scheme="https" /> + android:scheme="https" /> - + android:scheme="https" /> - - + + + + + + + + + @@ -249,26 +255,26 @@ android:name=".provider.tasks.notification.NotificationSchedulerJobTask" android:exported="false"> - + - - - - - + + + + + - + + android:value="6ed82b6e0756853d7d782a3f547f84f9ecba217e" /> diff --git a/app/src/main/assets/colors.json b/app/src/main/assets/colors.json old mode 100755 new mode 100644 diff --git a/app/src/main/assets/emojis.json b/app/src/main/assets/emojis.json old mode 100755 new mode 100644 diff --git a/app/src/main/assets/fonts/app_font.ttf b/app/src/main/assets/fonts/app_font.ttf old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/agate.css b/app/src/main/assets/highlight/styles/themes/agate.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/androidstudio.css b/app/src/main/assets/highlight/styles/themes/androidstudio.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/arduino-light.css b/app/src/main/assets/highlight/styles/themes/arduino-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/arta.css b/app/src/main/assets/highlight/styles/themes/arta.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/ascetic.css b/app/src/main/assets/highlight/styles/themes/ascetic.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-cave-light.css b/app/src/main/assets/highlight/styles/themes/atelier-cave-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-dune-light.css b/app/src/main/assets/highlight/styles/themes/atelier-dune-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css b/app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-forest-light.css b/app/src/main/assets/highlight/styles/themes/atelier-forest-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-heath-light.css b/app/src/main/assets/highlight/styles/themes/atelier-heath-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css b/app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css b/app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css b/app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atom-one-dark.css b/app/src/main/assets/highlight/styles/themes/atom-one-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/atom-one-light.css b/app/src/main/assets/highlight/styles/themes/atom-one-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/brown-paper.css b/app/src/main/assets/highlight/styles/themes/brown-paper.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/codepen-embed.css b/app/src/main/assets/highlight/styles/themes/codepen-embed.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/color-brewer.css b/app/src/main/assets/highlight/styles/themes/color-brewer.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/darcula.css b/app/src/main/assets/highlight/styles/themes/darcula.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/dark.css b/app/src/main/assets/highlight/styles/themes/dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/darkula.css b/app/src/main/assets/highlight/styles/themes/darkula.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/default.css b/app/src/main/assets/highlight/styles/themes/default.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/docco.css b/app/src/main/assets/highlight/styles/themes/docco.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/dracula.css b/app/src/main/assets/highlight/styles/themes/dracula.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/far.css b/app/src/main/assets/highlight/styles/themes/far.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/foundation.css b/app/src/main/assets/highlight/styles/themes/foundation.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/github-gist.css b/app/src/main/assets/highlight/styles/themes/github-gist.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/github.css b/app/src/main/assets/highlight/styles/themes/github.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/googlecode.css b/app/src/main/assets/highlight/styles/themes/googlecode.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/grayscale.css b/app/src/main/assets/highlight/styles/themes/grayscale.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/gruvbox-dark.css b/app/src/main/assets/highlight/styles/themes/gruvbox-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/gruvbox-light.css b/app/src/main/assets/highlight/styles/themes/gruvbox-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/hopscotch.css b/app/src/main/assets/highlight/styles/themes/hopscotch.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/hybrid.css b/app/src/main/assets/highlight/styles/themes/hybrid.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/idea.css b/app/src/main/assets/highlight/styles/themes/idea.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/ir-black.css b/app/src/main/assets/highlight/styles/themes/ir-black.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/kimbie.dark.css b/app/src/main/assets/highlight/styles/themes/kimbie.dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/kimbie.light.css b/app/src/main/assets/highlight/styles/themes/kimbie.light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/magula.css b/app/src/main/assets/highlight/styles/themes/magula.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/mono-blue.css b/app/src/main/assets/highlight/styles/themes/mono-blue.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/monokai-sublime.css b/app/src/main/assets/highlight/styles/themes/monokai-sublime.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/monokai.css b/app/src/main/assets/highlight/styles/themes/monokai.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/obsidian.css b/app/src/main/assets/highlight/styles/themes/obsidian.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/ocean.css b/app/src/main/assets/highlight/styles/themes/ocean.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/paraiso-dark.css b/app/src/main/assets/highlight/styles/themes/paraiso-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/paraiso-light.css b/app/src/main/assets/highlight/styles/themes/paraiso-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/pojoaque.css b/app/src/main/assets/highlight/styles/themes/pojoaque.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/purebasic.css b/app/src/main/assets/highlight/styles/themes/purebasic.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/qtcreator_dark.css b/app/src/main/assets/highlight/styles/themes/qtcreator_dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/qtcreator_light.css b/app/src/main/assets/highlight/styles/themes/qtcreator_light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/railscasts.css b/app/src/main/assets/highlight/styles/themes/railscasts.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/rainbow.css b/app/src/main/assets/highlight/styles/themes/rainbow.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/routeros.css b/app/src/main/assets/highlight/styles/themes/routeros.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/school-book.css b/app/src/main/assets/highlight/styles/themes/school-book.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/solarized-dark.css b/app/src/main/assets/highlight/styles/themes/solarized-dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/solarized-light.css b/app/src/main/assets/highlight/styles/themes/solarized-light.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/sunburst.css b/app/src/main/assets/highlight/styles/themes/sunburst.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow.css b/app/src/main/assets/highlight/styles/themes/tomorrow.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/vs.css b/app/src/main/assets/highlight/styles/themes/vs.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/vs2015.css b/app/src/main/assets/highlight/styles/themes/vs2015.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/xcode.css b/app/src/main/assets/highlight/styles/themes/xcode.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/xt256.css b/app/src/main/assets/highlight/styles/themes/xt256.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/highlight/styles/themes/zenburn.css b/app/src/main/assets/highlight/styles/themes/zenburn.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/md/github.css b/app/src/main/assets/md/github.css old mode 100755 new mode 100644 diff --git a/app/src/main/assets/md/github_dark.css b/app/src/main/assets/md/github_dark.css old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/data/dao/GroupedNotificationModel.java b/app/src/main/java/com/fastaccess/data/dao/GroupedNotificationModel.java index 1fd2d64f..867a074d 100644 --- a/app/src/main/java/com/fastaccess/data/dao/GroupedNotificationModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/GroupedNotificationModel.java @@ -26,8 +26,8 @@ import static com.annimon.stream.Collectors.toList; @Getter @Setter public class GroupedNotificationModel { public static final int HEADER = 1; - public static final int ROW = 2; + private int type; private Repo repo; private Notification notification; diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractLogin.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractLogin.java index dd7aa517..048bef49 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractLogin.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractLogin.java @@ -5,6 +5,8 @@ import android.os.Parcelable; import android.support.annotation.NonNull; import com.fastaccess.App; +import com.fastaccess.helper.Logger; +import com.fastaccess.helper.PrefGetter; import com.fastaccess.helper.RxHelper; import java.util.Date; @@ -56,24 +58,12 @@ import lombok.NoArgsConstructor; @Nullable boolean isLoggedIn; @Nullable boolean isEnterprise; @Nullable String otpCode; + @Nullable String enterpriseUrl; public Observable update(Login login) { - Login current = getUser(); - login.setIsEnterprise(current.isIsEnterprise()); - login.setToken(current.getToken()); return RxHelper.safeObservable(App.getInstance().getDataStore().update(login).toObservable()); } - public Observable saveObservable(Login entity) { - return App.getInstance().getDataStore() - .delete(Login.class) - .where(Login.LOGIN.eq(entity.getLogin())) - .get() - .single() - .flatMap(integer -> App.getInstance().getDataStore().insert(entity)) - .toObservable(); - } - public void save(Login entity) { App.getInstance().getDataStore() .delete(Login.class) @@ -127,7 +117,44 @@ import lombok.NoArgsConstructor; .value() > 0; } - @Override public int describeContents() { return 0; } + public static Observable onMultipleLogin(@NonNull Login userModel, boolean isEnterprise, boolean isNew) { + return Observable.fromPublisher(s -> { + Login currentUser = Login.getUser(); + if (currentUser != null) { + currentUser.setIsLoggedIn(false); + currentUser.save(currentUser); + } + if (!isEnterprise) { + PrefGetter.resetEnterprise(); + } + userModel.setIsLoggedIn(true); + if (isNew) { + userModel.setIsEnterprise(isEnterprise); + userModel.setToken(isEnterprise ? PrefGetter.getEnterpriseToken() : PrefGetter.getToken()); + userModel.setOtpCode(isEnterprise ? PrefGetter.getEnterpriseOtpCode() : PrefGetter.getOtpCode()); + userModel.setEnterpriseUrl(isEnterprise ? PrefGetter.getEnterpriseUrl() : null); + userModel.save(userModel); + } else { + if (isEnterprise) { + PrefGetter.setTokenEnterprise(userModel.token); + PrefGetter.setEnterpriseOtpCode(userModel.otpCode); + PrefGetter.setEnterpriseUrl(userModel.enterpriseUrl); + Logger.e(userModel.enterpriseUrl, PrefGetter.getEnterpriseUrl()); + } else { + PrefGetter.resetEnterprise(); + PrefGetter.setToken(userModel.token); + PrefGetter.setOtpCode(userModel.otpCode); + } + userModel.save(userModel); + } + s.onNext(true); + s.onComplete(); + }); + } + + @Override public int describeContents() { + return 0; + } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(this.id); @@ -165,6 +192,7 @@ import lombok.NoArgsConstructor; dest.writeByte(this.isLoggedIn ? (byte) 1 : (byte) 0); dest.writeByte(this.isEnterprise ? (byte) 1 : (byte) 0); dest.writeString(this.otpCode); + dest.writeString(this.enterpriseUrl); } protected AbstractLogin(Parcel in) { @@ -205,11 +233,18 @@ import lombok.NoArgsConstructor; this.isLoggedIn = in.readByte() != 0; this.isEnterprise = in.readByte() != 0; this.otpCode = in.readString(); + this.enterpriseUrl = in.readString(); } public static final Creator CREATOR = new Creator() { - @Override public Login createFromParcel(Parcel source) {return new Login(source);} + @Override + public Login createFromParcel(Parcel source) { + return new Login(source); + } - @Override public Login[] newArray(int size) {return new Login[size];} + @Override + public Login[] newArray(int size) { + return new Login[size]; + } }; } diff --git a/app/src/main/java/com/fastaccess/helper/ActivityHelper.java b/app/src/main/java/com/fastaccess/helper/ActivityHelper.java index 774b7192..75bda2fa 100644 --- a/app/src/main/java/com/fastaccess/helper/ActivityHelper.java +++ b/app/src/main/java/com/fastaccess/helper/ActivityHelper.java @@ -33,6 +33,8 @@ import android.widget.Toast; import com.fastaccess.App; import com.fastaccess.R; +import com.fastaccess.ui.modules.main.MainActivity; +import com.fastaccess.ui.modules.parser.LinksParserActivity; import java.util.ArrayList; import java.util.List; @@ -46,7 +48,8 @@ public class ActivityHelper { private static int BUTTON_ID = 32; - @Nullable public static Activity getActivity(@Nullable Context content) { + @Nullable + public static Activity getActivity(@Nullable Context content) { if (content == null) return null; else if (content instanceof Activity) return (Activity) content; else if (content instanceof ContextWrapper) return getActivity(((ContextWrapper) content).getBaseContext()); @@ -82,21 +85,24 @@ public class ActivityHelper { if (finalIntent != null) { try { context.startActivity(finalIntent); - } catch (ActivityNotFoundException ignored) {} + } catch (ActivityNotFoundException ignored) { + } } else { if (!fromCustomTab) { Activity activity = ActivityHelper.getActivity(context); if (activity == null) { try { context.startActivity(i); - } catch (ActivityNotFoundException ignored) {} + } catch (ActivityNotFoundException ignored) { + } return; } startCustomTab(activity, url); } else { try { context.startActivity(i); - } catch (ActivityNotFoundException ignored) {} + } catch (ActivityNotFoundException ignored) { + } } } } @@ -105,7 +111,8 @@ public class ActivityHelper { openChooser(context, Uri.parse(url)); } - @SafeVarargs public static void start(@NonNull Activity activity, Class cl, Pair... sharedElements) { + @SafeVarargs + public static void start(@NonNull Activity activity, Class cl, Pair... sharedElements) { Intent intent = new Intent(activity, cl); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements); activity.startActivity(intent, options.toBundle()); @@ -138,7 +145,8 @@ public class ActivityHelper { activity.startActivity(intent, options.toBundle()); } - @SafeVarargs public static void start(@NonNull Activity activity, @NonNull Intent intent, @NonNull Pair... sharedElements) { + @SafeVarargs + public static void start(@NonNull Activity activity, @NonNull Intent intent, @NonNull Pair... sharedElements) { ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements); activity.startActivity(intent, options.toBundle()); @@ -159,7 +167,8 @@ public class ActivityHelper { } @SuppressWarnings("RestrictedApi") - @Nullable public static Fragment getVisibleFragment(@NonNull FragmentManager manager) { + @Nullable + public static Fragment getVisibleFragment(@NonNull FragmentManager manager) { List fragments = manager.getFragments(); if (fragments != null && !fragments.isEmpty()) { for (Fragment fragment : fragments) { @@ -233,77 +242,11 @@ public class ActivityHelper { return chooserIntent; } - public static void showDismissHints(@NonNull Context context, @NonNull Runnable runnable) { - Activity activity = getActivity(context); - if (activity == null) return; - LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - params.weight = 1; - params.gravity = Gravity.START; - int margin = (int) context.getResources().getDimension(R.dimen.spacing_normal); - params.setMargins(margin, margin, margin, margin); - Button button = new Button(context); - button.setLayoutParams(params); - button.setText(context.getResources().getString(R.string.dismiss_all)); - button.setTextColor(context.getResources().getColor(R.color.material_grey_200)); - button.setBackgroundTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.material_red_accent_700))); - button.setAllCaps(true); - button.setOnClickListener(v -> { - PrefGetter.isCommentHintShowed(); - PrefGetter.isEditorHintShowed(); - PrefGetter.isFileOptionHintShow(); - PrefGetter.isHomeButoonHintShowed(); - PrefGetter.isNavDrawerHintShowed(); - PrefGetter.isReleaseHintShow(); - PrefGetter.isRepoFabHintShowed(); - PrefGetter.isRepoGuideShowed(); - runnable.run(); - ActivityHelper.hideDismissHints(context); - }); - ViewGroup parentView = (ViewGroup) activity.getWindow().getDecorView(); - RelativeLayout relativeLayout = new RelativeLayout(context); - relativeLayout.setId(BUTTON_ID); - relativeLayout.setLayoutParams( - new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - relativeLayout.setPadding(0, getNotificationBarHeight(context), 0, 0); - - relativeLayout.addView(button); - parentView.addView(relativeLayout); - } - - public static void hideDismissHints(@NonNull Context context) { - Activity activity = getActivity(context); - if (activity == null) return; - ViewGroup parentView = (ViewGroup) activity.getWindow().getDecorView(); - View button = parentView.findViewById(BUTTON_ID); - if (button != null) - parentView.removeView(button); - } - - public static void bringDismissAllToFront(@NonNull Context context) { - Activity activity = getActivity(context); - if (activity == null) return; - ViewGroup parentView = (ViewGroup) activity.getWindow().getDecorView(); - View button = parentView.findViewById(BUTTON_ID); - if (button != null) - button.bringToFront(); - } - - private static int getNotificationBarHeight(@NonNull Context context) { - Rect rectangle = new Rect(); - Activity activity = getActivity(context); - if (activity == null) return 0; - Window window = activity.getWindow(); - window.getDecorView().getWindowVisibleDisplayFrame(rectangle); - int statusBarHeight = rectangle.top; - int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); - - return Math.abs(contentViewTop - statusBarHeight); - } - - public static void activateActivity(Context context, final Class activity, final boolean activate) { + public static void activateLinkInterceptorActivity(Context context, boolean activate) { final PackageManager pm = context.getPackageManager(); final int flag = activate ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; - pm.setComponentEnabledSetting(new ComponentName(context, activity), flag, PackageManager.DONT_KILL_APP); + pm.setComponentEnabledSetting(new ComponentName(context, LinksParserActivity.class), flag, PackageManager.DONT_KILL_APP); } + } diff --git a/app/src/main/java/com/fastaccess/helper/PrefGetter.java b/app/src/main/java/com/fastaccess/helper/PrefGetter.java index ce523171..7375d324 100644 --- a/app/src/main/java/com/fastaccess/helper/PrefGetter.java +++ b/app/src/main/java/com/fastaccess/helper/PrefGetter.java @@ -418,4 +418,10 @@ public class PrefGetter { public static boolean isEnterprise() { return !InputHelper.isEmpty(getEnterpriseUrl()); } + + public static void resetEnterprise() { + PrefGetter.setTokenEnterprise(null); + PrefGetter.setEnterpriseOtpCode(null); + PrefGetter.setEnterpriseUrl(null); + } } diff --git a/app/src/main/java/com/fastaccess/provider/emoji/Emoji.java b/app/src/main/java/com/fastaccess/provider/emoji/Emoji.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/emoji/EmojiLoader.java b/app/src/main/java/com/fastaccess/provider/emoji/EmojiLoader.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/emoji/EmojiManager.java b/app/src/main/java/com/fastaccess/provider/emoji/EmojiManager.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/emoji/EmojiParser.java b/app/src/main/java/com/fastaccess/provider/emoji/EmojiParser.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/emoji/EmojiTrie.java b/app/src/main/java/com/fastaccess/provider/emoji/EmojiTrie.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/emoji/Fitzpatrick.java b/app/src/main/java/com/fastaccess/provider/emoji/Fitzpatrick.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/fastaccess/provider/scheme/LinkParserHelper.java b/app/src/main/java/com/fastaccess/provider/scheme/LinkParserHelper.java index f0e4357a..bb34f400 100644 --- a/app/src/main/java/com/fastaccess/provider/scheme/LinkParserHelper.java +++ b/app/src/main/java/com/fastaccess/provider/scheme/LinkParserHelper.java @@ -4,15 +4,13 @@ import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.annimon.stream.Collectors; import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.Logger; import com.fastaccess.helper.ObjectsCompat; import com.fastaccess.helper.PrefGetter; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -26,10 +24,9 @@ public class LinkParserHelper { static final String RAW_AUTHORITY = "raw.githubusercontent.com"; static final String API_AUTHORITY = "api.github.com"; static final String PROTOCOL_HTTPS = "https"; - static final ArrayList IGNORED_LIST = Stream.of("notifications", "settings", "blog", "explore", - "dashboard", "repositories", "logout", "sessions", "site", "security", "contact", "about", "logos", "login", "pricing", "") - .collect(Collectors.toCollection(ArrayList::new)); - + static final List IGNORED_LIST = Arrays.asList("notifications", "settings", "blog", + "explore", "dashboard", "repositories", "logout", "sessions", "site", "security", + "contact", "about", "logos", "login", "pricing", ""); @SafeVarargs static Optional returnNonNull(@NonNull T... t) { return Stream.of(t).filter(ObjectsCompat::nonNull).findFirst(); @@ -67,17 +64,10 @@ public class LinkParserHelper { public static boolean isEnterprise(@Nullable String url) { if (InputHelper.isEmpty(url) || !PrefGetter.isEnterprise()) return false; - try { - Uri enterpriseUri = Uri.parse(getEndpoint(PrefGetter.getEnterpriseUrl())); - Uri uri = Uri.parse(url); - if (enterpriseUri != null) { - boolean isEnterprise = enterpriseUri.getAuthority().equalsIgnoreCase(uri != null && uri.getAuthority() != null - ? uri.getAuthority() : url); - Logger.e(isEnterprise, enterpriseUri.getAuthority(), uri != null ? uri.getAuthority() : "N/A"); - return isEnterprise; - } - } catch (Exception ignored) {} - return false; + String enterpriseUrl = PrefGetter.getEnterpriseUrl().toLowerCase(); + url = url.toLowerCase(); + return url.equalsIgnoreCase(enterpriseUrl) || url.startsWith(enterpriseUrl) || url.startsWith(getEndpoint(enterpriseUrl)) + || url.contains(enterpriseUrl) || enterpriseUrl.contains(url); } public static String stripScheme(@NonNull String url) { diff --git a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java index 31472ecd..280c38e9 100644 --- a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java +++ b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; @@ -139,16 +140,30 @@ public class SchemeParser { Optional intentOptional = returnNonNull(trending, userIntent, repoIssues, repoPulls, pullRequestIntent, commit, commits, createIssueIntent, issueIntent, releasesIntent, repoIntent, repoWikiIntent, blob); Optional empty = Optional.empty(); + Logger.e(isEnterprise); if (intentOptional != null && intentOptional.isPresent() && intentOptional != empty) { Intent intent = intentOptional.get(); - if (intent.getExtras() != null && isEnterprise) { - intent.getExtras().putBoolean(BundleConstant.IS_ENTERPRISE, true); + if (isEnterprise) { + if (intent.getExtras() != null) { + Bundle bundle = intent.getExtras(); + bundle.putBoolean(BundleConstant.IS_ENTERPRISE, true); + intent.putExtras(bundle); + } else { + intent.putExtra(BundleConstant.IS_ENTERPRISE, true); + } } + Logger.e(intent); return intent; } else { Intent intent = getGeneralRepo(context, data); - if (intent != null && intent.getExtras() != null && isEnterprise) { - intent.getExtras().putBoolean(BundleConstant.IS_ENTERPRISE, true); + if (isEnterprise) { + if (intent != null && intent.getExtras() != null) { + Bundle bundle = intent.getExtras(); + bundle.putBoolean(BundleConstant.IS_ENTERPRISE, true); + intent.putExtras(bundle); + } else if (intent != null) { + intent.putExtra(BundleConstant.IS_ENTERPRISE, true); + } } return intent; } diff --git a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java index 3daefaec..973625d9 100644 --- a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java +++ b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java @@ -274,7 +274,7 @@ public class NotificationSchedulerJobTask extends JobService { } private NotificationCompat.Builder getNotification(@NonNull String title, @NonNull String message) { - return new NotificationCompat.Builder(this) + return new NotificationCompat.Builder(this, title) .setContentTitle(title) .setContentText(message) .setAutoCancel(true); diff --git a/app/src/main/java/com/fastaccess/provider/theme/ThemeEngine.kt b/app/src/main/java/com/fastaccess/provider/theme/ThemeEngine.kt index e455b0ce..2a6770c6 100644 --- a/app/src/main/java/com/fastaccess/provider/theme/ThemeEngine.kt +++ b/app/src/main/java/com/fastaccess/provider/theme/ThemeEngine.kt @@ -1,5 +1,6 @@ package com.fastaccess.provider.theme +import android.app.Activity import android.app.ActivityManager import android.graphics.BitmapFactory import android.support.annotation.StyleRes @@ -32,19 +33,14 @@ object ThemeEngine { fun applyForAbout(activity: MaterialAboutActivity) { val themeMode = PrefGetter.getThemeType(activity) - if (themeMode == PrefGetter.LIGHT) { - activity.setTheme(R.style.AppTheme_AboutActivity_Light) - } else if (themeMode == PrefGetter.DARK) { - activity.setTheme(R.style.AppTheme_AboutActivity_Dark) - } else if (themeMode == PrefGetter.AMLOD) { - activity.setTheme(R.style.AppTheme_AboutActivity_Amlod) - } else if (themeMode == PrefGetter.MID_NIGHT_BLUE) { - activity.setTheme(R.style.AppTheme_AboutActivity_MidNightBlue) - } else if (themeMode == PrefGetter.BLUISH) { - activity.setTheme(R.style.AppTheme_AboutActivity_Bluish) + when (themeMode) { + PrefGetter.LIGHT -> activity.setTheme(R.style.AppTheme_AboutActivity_Light) + PrefGetter.DARK -> activity.setTheme(R.style.AppTheme_AboutActivity_Dark) + PrefGetter.AMLOD -> activity.setTheme(R.style.AppTheme_AboutActivity_Amlod) + PrefGetter.MID_NIGHT_BLUE -> activity.setTheme(R.style.AppTheme_AboutActivity_MidNightBlue) + PrefGetter.BLUISH -> activity.setTheme(R.style.AppTheme_AboutActivity_Bluish) } - activity.setTaskDescription(ActivityManager.TaskDescription(activity.getString(R.string.app_name), - BitmapFactory.decodeResource(activity.resources, R.mipmap.ic_launcher), ViewHelper.getPrimaryColor(activity))) + setTaskDescription(activity) } fun applyDialogTheme(activity: BaseActivity<*, *>) { @@ -58,8 +54,8 @@ object ThemeEngine { @StyleRes fun getTheme(themeMode: Int, themeColor: Int): Int { Logger.e(themeMode, themeColor) // I wish if I could simplify this :'( too many cases for the love of god. - if (themeMode == PrefGetter.LIGHT) { - when (themeColor) { + when (themeMode) { + PrefGetter.LIGHT -> when (themeColor) { PrefGetter.RED -> return R.style.ThemeLight_Red PrefGetter.PINK -> return R.style.ThemeLight_Pink PrefGetter.PURPLE -> return R.style.ThemeLight_Purple @@ -78,8 +74,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.ThemeLight_DeepOrange else -> return R.style.ThemeLight } - } else if (themeMode == PrefGetter.DARK) { - when (themeColor) { + PrefGetter.DARK -> when (themeColor) { PrefGetter.RED -> return R.style.ThemeDark_Red PrefGetter.PINK -> return R.style.ThemeDark_Pink PrefGetter.PURPLE -> return R.style.ThemeDark_Purple @@ -97,8 +92,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.ThemeDark_DeepOrange else -> return R.style.ThemeDark } - } else if (themeMode == PrefGetter.AMLOD) { - when (themeColor) { + PrefGetter.AMLOD -> when (themeColor) { PrefGetter.RED -> return R.style.ThemeAmlod_Red PrefGetter.PINK -> return R.style.ThemeAmlod_Pink PrefGetter.PURPLE -> return R.style.ThemeAmlod_Purple @@ -116,8 +110,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.ThemeAmlod_DeepOrange else -> return R.style.ThemeAmlod } - } else if (themeMode == PrefGetter.MID_NIGHT_BLUE) { - when (themeColor) { + PrefGetter.MID_NIGHT_BLUE -> when (themeColor) { PrefGetter.RED -> return R.style.ThemeMidNighBlue_Red PrefGetter.PINK -> return R.style.ThemeMidNighBlue_Pink PrefGetter.PURPLE -> return R.style.ThemeMidNighBlue_Purple @@ -135,8 +128,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.ThemeMidNighBlue_DeepOrange else -> return R.style.ThemeMidNighBlue } - } else if (themeMode == PrefGetter.BLUISH) { - when (themeColor) { + PrefGetter.BLUISH -> when (themeColor) { PrefGetter.RED -> return R.style.ThemeBluish_Red PrefGetter.PINK -> return R.style.ThemeBluish_Pink PrefGetter.PURPLE -> return R.style.ThemeBluish_Purple @@ -159,8 +151,8 @@ object ThemeEngine { } @StyleRes fun getDialogTheme(themeMode: Int, themeColor: Int): Int { - if (themeMode == PrefGetter.LIGHT) { - when (themeColor) { + when (themeMode) { + PrefGetter.LIGHT -> when (themeColor) { PrefGetter.RED -> return R.style.DialogThemeLight_Red PrefGetter.PINK -> return R.style.DialogThemeLight_Pink PrefGetter.PURPLE -> return R.style.DialogThemeLight_Purple @@ -179,8 +171,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.DialogThemeLight_DeepOrange else -> return R.style.DialogThemeLight } - } else if (themeMode == PrefGetter.DARK) { - when (themeColor) { + PrefGetter.DARK -> when (themeColor) { PrefGetter.RED -> return R.style.DialogThemeDark_Red PrefGetter.PINK -> return R.style.DialogThemeDark_Pink PrefGetter.PURPLE -> return R.style.DialogThemeDark_Purple @@ -198,8 +189,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.DialogThemeDark_DeepOrange else -> return R.style.DialogThemeDark } - } else if (themeMode == PrefGetter.AMLOD) { - when (themeColor) { + PrefGetter.AMLOD -> when (themeColor) { PrefGetter.RED -> return R.style.DialogThemeAmlod_Red PrefGetter.PINK -> return R.style.DialogThemeAmlod_Pink PrefGetter.PURPLE -> return R.style.DialogThemeAmlod_Purple @@ -217,8 +207,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.DialogThemeAmlod_DeepOrange else -> return R.style.DialogThemeAmlod } - } else if (themeMode == PrefGetter.MID_NIGHT_BLUE) { - when (themeColor) { + PrefGetter.MID_NIGHT_BLUE -> when (themeColor) { PrefGetter.RED -> return R.style.DialogThemeLight_Red PrefGetter.PINK -> return R.style.DialogThemeLight_Pink PrefGetter.PURPLE -> return R.style.DialogThemeLight_Purple @@ -236,8 +225,7 @@ object ThemeEngine { PrefGetter.DEEP_ORANGE -> return R.style.DialogThemeLight_DeepOrange else -> return R.style.DialogThemeLight } - } else if (themeMode == PrefGetter.BLUISH) { - when (themeColor) { + PrefGetter.BLUISH -> when (themeColor) { PrefGetter.RED -> return R.style.DialogThemeBluish_Red PrefGetter.PINK -> return R.style.DialogThemeBluish_Pink PrefGetter.PURPLE -> return R.style.DialogThemeBluish_Purple @@ -259,11 +247,11 @@ object ThemeEngine { return R.style.DialogThemeLight } - private fun setTaskDescription(activity: BaseActivity<*, *>) { + private fun setTaskDescription(activity: Activity) { activity.setTaskDescription(ActivityManager.TaskDescription(activity.getString(R.string.app_name), BitmapFactory.decodeResource(activity.getResources(), R.mipmap.ic_launcher), ViewHelper.getPrimaryColor(activity))) } private fun hasTheme(activity: BaseActivity<*, *>) = (activity is LoginChooserActivity || activity is LoginActivity || - activity is DonateActivity || activity is ReviewChangesActivity) + activity is DonateActivity || activity is ReviewChangesActivity) } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/AssigneesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/AssigneesViewHolder.java index 64643f3b..7027707b 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/AssigneesViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/AssigneesViewHolder.java @@ -51,12 +51,12 @@ public class AssigneesViewHolder extends BaseViewHolder { } @Override public void bind(@NonNull User user) { - avatar.setUrl(user.getAvatarUrl(), user.getLogin(), user.isOrganizationType(), LinkParserHelper.isEnterprise(user.getUrl())); + avatar.setUrl(user.getAvatarUrl(), user.getLogin(), user.isOrganizationType(), LinkParserHelper.isEnterprise(user.getHtmlUrl())); title.setText(user.getLogin()); date.setVisibility(View.GONE); if (onSelectAssignee != null) { itemView.setBackgroundColor(onSelectAssignee.isAssigneeSelected(getAdapterPosition()) - ? lightGray : ViewHelper.getWindowBackground(itemView.getContext())); + ? lightGray : ViewHelper.getWindowBackground(itemView.getContext())); } } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java index 837871e1..ec13039b 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java @@ -55,7 +55,7 @@ public class CommentsViewHolder extends BaseViewHolder { @Override public void bind(@NonNull Comment commentsModel) { if (commentsModel.getUser() != null) { avatar.setUrl(commentsModel.getUser().getAvatarUrl(), commentsModel.getUser().getLogin(), - commentsModel.getUser().isOrganizationType(), LinkParserHelper.isEnterprise(commentsModel.getUser().getUrl())); + commentsModel.getUser().isOrganizationType(), LinkParserHelper.isEnterprise(commentsModel.getUser().getHtmlUrl())); } else { avatar.setUrl(null, null, false, false); } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitsViewHolder.java index 3f094dad..d66e5a94 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitsViewHolder.java @@ -49,7 +49,7 @@ public class CommitsViewHolder extends BaseViewHolder { .append(" ") .append(ParseDateFormat.getTimeAgo(date))); avatarLayout.setUrl(avatar, login, false, LinkParserHelper - .isEnterprise(commit.getAuthor() != null ? commit.getAuthor().getUrl() : commit.getGitCommit().getAuthor().getUrl())); + .isEnterprise(commit.getAuthor() != null ? commit.getAuthor().getUrl() : commit.getGitCommit().getAuthor().getHtmlUrl())); avatarLayout.setVisibility(View.VISIBLE); if (commit.getGitCommit() != null && commit.getGitCommit().getCommentCount() > 0) { commentsNo.setText(String.valueOf(commit.getGitCommit() != null ? commit.getGitCommit().getCommentCount() : 0)); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java index 0f924d2d..7977c92e 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java @@ -456,7 +456,7 @@ public class FeedsViewHolder extends BaseViewHolder { if (eventsModel.getActor() != null) { avatar.setUrl(eventsModel.getActor().getAvatarUrl(), eventsModel.getActor().getLogin(), eventsModel.getActor().isOrganizationType(), - LinkParserHelper.isEnterprise(eventsModel.getActor().getUrl())); + LinkParserHelper.isEnterprise(eventsModel.getActor().getHtmlUrl())); } else { avatar.setUrl(null, null, false, false); } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistsViewHolder.java index 28fa8efc..2fc2e36f 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistsViewHolder.java @@ -48,7 +48,7 @@ public class GistsViewHolder extends BaseViewHolder { String url = item.getOwner() != null ? item.getOwner().getAvatarUrl() : item.getUser() != null ? item.getUser().getAvatarUrl() : null; String login = item.getOwner() != null ? item.getOwner().getLogin() : item.getUser() != null ? item.getUser().getLogin() : null; avatar.setUrl(url, login, false, LinkParserHelper.isEnterprise( - item.getOwner() != null ? item.getOwner().getUrl() : item.getUser() != null ? item.getUser().getUrl() : null)); + item.getOwner() != null ? item.getOwner().getHtmlUrl() : item.getUser() != null ? item.getUser().getHtmlUrl() : null)); } } title.setText(item.getDisplayTitle(isFromProfile)); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java index 2d537a71..5e2110a2 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java @@ -172,7 +172,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder { private void setup(User user, String description, ReactionsModel reactionsModel) { avatar.setUrl(user.getAvatarUrl(), user.getLogin(), user.isOrganizationType(), - LinkParserHelper.isEnterprise(user.getUrl())); + LinkParserHelper.isEnterprise(user.getHtmlUrl())); name.setText(user.getLogin()); if (reactionsModel != null) { appendEmojies(reactionsModel); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssuesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssuesViewHolder.java index a16708e9..024a8027 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssuesViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssuesViewHolder.java @@ -118,7 +118,7 @@ public class IssuesViewHolder extends BaseViewHolder { } if (withAvatar && avatarLayout != null) { avatarLayout.setUrl(issueModel.getUser().getAvatarUrl(), issueModel.getUser().getLogin(), false, - LinkParserHelper.isEnterprise(issueModel.getUser().getUrl())); + LinkParserHelper.isEnterprise(issueModel.getUser().getHtmlUrl())); avatarLayout.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PinnedReposViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PinnedReposViewHolder.java index 84c0d0b2..ffbe50a6 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PinnedReposViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PinnedReposViewHolder.java @@ -72,7 +72,7 @@ public class PinnedReposViewHolder extends BaseViewHolder { boolean isOrg = repo.getOwner() != null && repo.getOwner().isOrganizationType(); if (avatarLayout != null) { avatarLayout.setVisibility(View.VISIBLE); - avatarLayout.setUrl(avatar, login, isOrg, LinkParserHelper.isEnterprise(repo.getUrl())); + avatarLayout.setUrl(avatar, login, isOrg, LinkParserHelper.isEnterprise(repo.getHtmlUrl())); } NumberFormat numberFormat = NumberFormat.getNumberInstance(); stars.setText(numberFormat.format(repo.getStargazersCount())); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ProfileOrgsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ProfileOrgsViewHolder.java index ab58f073..f1083082 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ProfileOrgsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ProfileOrgsViewHolder.java @@ -36,6 +36,6 @@ public class ProfileOrgsViewHolder extends BaseViewHolder { @Override public void bind(@NonNull User user) { name.setText(user.getLogin()); - avatarLayout.setUrl(user.getAvatarUrl(), user.getLogin(), true, LinkParserHelper.isEnterprise(user.getUrl())); + avatarLayout.setUrl(user.getAvatarUrl(), user.getLogin(), true, LinkParserHelper.isEnterprise(user.getHtmlUrl())); } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestViewHolder.java index 42df3643..7898539a 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestViewHolder.java @@ -55,7 +55,7 @@ public class PullRequestViewHolder extends BaseViewHolder { } if (withAvatar && avatarLayout != null) { avatarLayout.setUrl(pullRequest.getUser().getAvatarUrl(), pullRequest.getUser().getLogin(), - false, LinkParserHelper.isEnterprise(pullRequest.getUrl())); + false, LinkParserHelper.isEnterprise(pullRequest.getHtmlUrl())); avatarLayout.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullStatusViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullStatusViewHolder.java index f5f15f41..1837a9fb 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullStatusViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullStatusViewHolder.java @@ -78,8 +78,7 @@ public class PullStatusViewHolder extends BaseViewHolder builder.append(ContextCompat.getDrawable(statuses.getContext(), statusesModel.getState().getDrawableRes())); if (!InputHelper.isEmpty(statusesModel.getTargetUrl())) { builder.append(" ") - .url(statusesModel.getDescription(), v -> SchemeParser.launchUri(v.getContext(), - Uri.parse(statusesModel.getTargetUrl()))) + .url(statusesModel.getDescription(), v -> SchemeParser.launchUri(v.getContext(), statusesModel.getTargetUrl())) .append("\n"); } else { builder.append("\n"); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java index e5c4dd4b..6b490e7b 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java @@ -81,7 +81,7 @@ public class ReposViewHolder extends BaseViewHolder { boolean isOrg = repo.getOwner() != null && repo.getOwner().isOrganizationType(); if (avatarLayout != null) { avatarLayout.setVisibility(View.VISIBLE); - avatarLayout.setUrl(avatar, login, isOrg, LinkParserHelper.isEnterprise(repo.getUrl())); + avatarLayout.setUrl(avatar, login, isOrg, LinkParserHelper.isEnterprise(repo.getHtmlUrl())); } } long repoSize = repo.getSize() > 0 ? (repo.getSize() * 1000) : repo.getSize(); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java index c0c85faf..0ae6c04f 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java @@ -100,7 +100,7 @@ public class ReviewCommentsViewHolder extends BaseViewHolder @Override public void bind(@NonNull ReviewCommentModel commentModel) { avatarView.setUrl(commentModel.getUser().getAvatarUrl(), commentModel.getUser().getLogin(), commentModel.getUser() - .isOrganizationType(), LinkParserHelper.isEnterprise(commentModel.getUrl())); + .isOrganizationType(), LinkParserHelper.isEnterprise(commentModel.getHtmlUrl())); name.setText(commentModel.getUser().getLogin()); date.setText(ParseDateFormat.getTimeAgo(commentModel.getCreatedAt())); if (!InputHelper.isEmpty(commentModel.getBodyHtml())) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewsViewHolder.java index 79ab0f69..058768ce 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewsViewHolder.java @@ -47,7 +47,7 @@ public class ReviewsViewHolder extends BaseViewHolder { if (review != null) { if (review.getUser() != null) { avatarLayout.setUrl(review.getUser().getAvatarUrl(), review.getUser().getLogin(), false, - LinkParserHelper.isEnterprise(review.getUser().getUrl())); + LinkParserHelper.isEnterprise(review.getUser().getHtmlUrl())); } else { avatarLayout.setUrl(null, null, false, false); } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java index 171ce338..cb330c4a 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java @@ -108,7 +108,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { Comment commentsModel = timelineModel.getComment(); if (commentsModel.getUser() != null) { avatar.setUrl(commentsModel.getUser().getAvatarUrl(), commentsModel.getUser().getLogin(), - false, LinkParserHelper.isEnterprise(commentsModel.getUrl())); + false, LinkParserHelper.isEnterprise(commentsModel.getHtmlUrl())); } else { avatar.setUrl(null, null, false, false); } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/UsersViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/UsersViewHolder.java index 52b14da8..2788e64c 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/UsersViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/UsersViewHolder.java @@ -47,7 +47,7 @@ public class UsersViewHolder extends BaseViewHolder { public void bind(@NonNull User user, boolean isContributor) { avatar.setUrl(user.getAvatarUrl(), user.getLogin(), user.isOrganizationType(), - LinkParserHelper.isEnterprise(user.getUrl())); + LinkParserHelper.isEnterprise(user.getHtmlUrl())); title.setText(user.getLogin()); date.setVisibility(!isContributor ? View.GONE : View.VISIBLE); if (isContributor) { diff --git a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java index 831bd66d..0b7c3eab 100644 --- a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java +++ b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java @@ -115,8 +115,12 @@ public abstract class BaseActivity, val extraNav: NavigationView?, override fun onItemLongClick(position: Int, v: View?, item: Login) {} - override fun onItemClick(position: Int, v: View?, item: Login) { - if (item.isIsEnterprise) { - PrefGetter.setTokenEnterprise(item.token) - PrefGetter.setEnterpriseOtpCode(item.otpCode) - } else { - PrefGetter.setToken(item.token) - PrefGetter.setOtpCode(item.otpCode) - } - view.getPresenter().manageViewDisposable(Observable.just(Login.getUser()) + override fun onItemClick(position: Int, v: View, item: Login) { + ActivityHelper.activateLinkInterceptorActivity(v.context, !item.isIsEnterprise) + view.getPresenter().manageViewDisposable(RxHelper.getObserver(Login.onMultipleLogin(item, item.isIsEnterprise, false)) .doOnSubscribe { view.showProgress(0) } - .flatMap { login -> - login.isIsLoggedIn = false - login.update(login) - } - .concatMap { - item.isIsLoggedIn = true - item.saveObservable(item) - } .doFinally { view.hideProgress() } .subscribe({ view.onRestartApp() }, ::println)) } diff --git a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java index 6188c838..bcc1b3a2 100644 --- a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java @@ -8,6 +8,7 @@ import android.support.annotation.StringRes; import com.evernote.android.state.StateSaver; import com.fastaccess.R; import com.fastaccess.data.dao.GitHubErrorResponse; +import com.fastaccess.helper.Logger; import com.fastaccess.helper.RxHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.BaseMvp; diff --git a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java index 74fbc341..12f44435 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java @@ -45,7 +45,6 @@ import butterknife.BindView; import butterknife.OnClick; import butterknife.OnItemClick; import butterknife.OnTextChanged; -import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt; import static android.view.View.GONE; @@ -174,30 +173,7 @@ public class EditorActivity extends BaseActivity { - }); - } - + if (!PrefGetter.isEditorHintShowed()) {} if (editText.getText().toString().contains(sentFromFastHub)) { editText.setText(editText.getText().toString().replace(sentFromFastHub, "")); sentVia.setChecked(true); diff --git a/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java index c391afd6..ed55b1ca 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java @@ -42,7 +42,6 @@ public class FeedsPresenter extends BasePresenter implements Feed @Override public void onFragmentCreated(@NonNull Bundle argument) { user = argument.getString(BundleConstant.EXTRA); isOrg = argument.getBoolean(BundleConstant.EXTRA_TWO); - setEnterprise(argument.getBoolean(BundleConstant.IS_ENTERPRISE)); if (eventsModels.isEmpty()) { onCallApi(1); } @@ -66,11 +65,10 @@ public class FeedsPresenter extends BasePresenter implements Feed observable = RestProvider.getOrgService(isEnterprise()).getReceivedEvents(user, page); } else { observable = RestProvider.getUserService(login.getLogin().equalsIgnoreCase(user) - ? PrefGetter.isEnterprise() : isEnterprise()).getUserEvents(user, page); + ? PrefGetter.isEnterprise() : isEnterprise()).getUserEvents(user, page); } } else { - observable = RestProvider.getUserService(PrefGetter.isEnterprise()) - .getReceivedEvents(login.getLogin(), page); + observable = RestProvider.getUserService(PrefGetter.isEnterprise()).getReceivedEvents(login.getLogin(), page); } makeRestCall(observable, response -> { lastPage = response.getLast(); @@ -159,7 +157,7 @@ public class FeedsPresenter extends BasePresenter implements Feed } else { Repo repoModel = item.getRepo(); if (item.getRepo() != null) SchemeParser.launchUri(v.getContext(), repoModel.getHtmlUrl() != null - ? repoModel.getHtmlUrl() : repoModel.getUrl()); + ? repoModel.getHtmlUrl() : repoModel.getUrl()); } } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java index fb966ffa..498dc518 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java @@ -175,7 +175,7 @@ public class GistActivity extends BaseActivity if (getPresenter().getGist() != null) { Intent intent = new Intent(); Gist gistsModel = new Gist(); - gistsModel.setUrl(getPresenter().getGist().getUrl()); + gistsModel.setUrl(getPresenter().getGist().getHtmlUrl()); intent.putExtras(Bundler.start().put(BundleConstant.ITEM, gistsModel).end()); setResult(RESULT_OK, intent); } @@ -207,7 +207,7 @@ public class GistActivity extends BaseActivity gistsModel.getUser() != null ? gistsModel.getUser().getAvatarUrl() : ""; String login = gistsModel.getOwner() != null ? gistsModel.getOwner().getLogin() : gistsModel.getUser() != null ? gistsModel.getUser().getLogin() : ""; - avatarLayout.setUrl(url, login, false, LinkParserHelper.isEnterprise(gistsModel.getUrl())); + avatarLayout.setUrl(url, login, false, LinkParserHelper.isEnterprise(gistsModel.getHtmlUrl())); title.setText(gistsModel.getDisplayTitle(false, true)); setTaskName(gistsModel.getDisplayTitle(false, true).toString()); detailsIcon.setVisibility(InputHelper.isEmpty(gistsModel.getDescription()) || !ViewHelper.isEllipsed(title) ? View.GONE : View.VISIBLE); diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java b/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java index 2a64f25d..2bab748c 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/login/LoginActivity.java @@ -53,26 +53,32 @@ import io.reactivex.functions.Action; * Created by Kosh on 08 Feb 2017, 9:10 PM */ -public class LoginActivity extends BaseActivity implements LoginMvp.View, - LanguageBottomSheetDialog.LanguageDialogListener { +public class LoginActivity extends BaseActivity implements LoginMvp.View { - @Nullable @BindView(R.id.language_selector) RelativeLayout language_selector; - @Nullable @BindView(R.id.usernameEditText) TextInputEditText usernameEditText; - @Nullable @BindView(R.id.username) TextInputLayout username; - @Nullable @BindView(R.id.passwordEditText) TextInputEditText passwordEditText; - @Nullable @BindView(R.id.password) TextInputLayout password; - @Nullable @BindView(R.id.twoFactor) TextInputLayout twoFactor; - @Nullable @BindView(R.id.twoFactorEditText) TextInputEditText twoFactorEditText; - @Nullable @BindView(R.id.login) FloatingActionButton login; - @Nullable @BindView(R.id.progress) ProgressBar progress; - @Nullable @BindView(R.id.accessTokenCheckbox) FontCheckbox accessTokenCheckbox; - @Nullable @BindView(R.id.endpoint) TextInputLayout endpoint; + @BindView(R.id.usernameEditText) TextInputEditText usernameEditText; + @BindView(R.id.username) TextInputLayout username; + @BindView(R.id.passwordEditText) TextInputEditText passwordEditText; + @BindView(R.id.password) TextInputLayout password; + @BindView(R.id.twoFactor) TextInputLayout twoFactor; + @BindView(R.id.twoFactorEditText) TextInputEditText twoFactorEditText; + @BindView(R.id.login) FloatingActionButton login; + @BindView(R.id.progress) ProgressBar progress; + @BindView(R.id.accessTokenCheckbox) FontCheckbox accessTokenCheckbox; + @BindView(R.id.endpoint) TextInputLayout endpoint; @State boolean isBasicAuth; - @State boolean isEnterprise; - @State boolean extraLogin; + + public static void startOAuth(@NonNull Activity activity) { + Intent intent = new Intent(activity, LoginActivity.class); + intent.putExtras(Bundler.start() + .put(BundleConstant.YES_NO_EXTRA, true) + .put(BundleConstant.EXTRA_TWO, true) + .end()); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(intent); + activity.finish(); + } public static void start(@NonNull Activity activity, boolean isBasicAuth) { - PrefGetter.setEnterpriseUrl(null); start(activity, isBasicAuth, false); } @@ -83,37 +89,35 @@ public class LoginActivity extends BaseActivity i .put(BundleConstant.IS_ENTERPRISE, isEnterprise) .end()); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra("smartLock", true); activity.startActivity(intent); activity.finish(); } - @Optional @OnClick(R.id.browserLogin) void onOpenBrowser() { - if (isEnterprise && InputHelper.isEmpty(endpoint)) { + @OnClick(R.id.browserLogin) void onOpenBrowser() { + if (isEnterprise() && InputHelper.isEmpty(endpoint)) { endpoint.setError(getString(R.string.required_field)); return; } - if (endpoint != null) endpoint.setError(null); - Uri uri = getPresenter().getAuthorizationUrl(endpoint != null ? InputHelper.toString(endpoint) : null); + endpoint.setError(null); + Uri uri = getPresenter().getAuthorizationUrl(endpoint != null ? InputHelper.toString + (endpoint) : null); ActivityHelper.startCustomTab(this, uri); } - @Optional @OnClick(R.id.login) public void onClick() { + @OnClick(R.id.login) public void onClick() { doLogin(); } - @Optional @OnCheckedChanged(R.id.accessTokenCheckbox) void onCheckChanged(boolean checked) { + @OnCheckedChanged(R.id.accessTokenCheckbox) void onCheckChanged(boolean checked) { isBasicAuth = !checked; - if (password != null) { - password.setHint(checked ? getString(R.string.access_token) : getString(R.string.password)); - } + password.setHint(checked ? getString(R.string.access_token) : getString(R.string + .password)); } - @Optional @OnEditorAction(R.id.passwordEditText) public boolean onSendPassword() { - if (twoFactor == null || twoFactorEditText == null) return false; + @OnEditorAction(R.id.passwordEditText) public boolean onSendPassword() { if (twoFactor.getVisibility() == View.VISIBLE) { twoFactorEditText.requestFocus(); - } else if (endpoint != null && endpoint.getVisibility() == View.VISIBLE) { + } else if (endpoint.getVisibility() == View.VISIBLE) { endpoint.requestFocus(); } else { doLogin(); @@ -121,20 +125,16 @@ public class LoginActivity extends BaseActivity i return true; } - @Optional @OnEditorAction(R.id.twoFactorEditText) public boolean onSend2FA() { + @OnEditorAction(R.id.twoFactorEditText) public boolean onSend2FA() { doLogin(); return true; } - @Optional @OnEditorAction(R.id.endpointEditText) boolean onSendEndpoint() { + @OnEditorAction(R.id.endpointEditText) boolean onSendEndpoint() { doLogin(); return true; } - @Optional @OnClick(R.id.language_selector_clicker) public void onChangeLanguage() { - showLanguage(); - } - @Override protected int layout() { return R.layout.login_form_layout; } @@ -156,39 +156,29 @@ public class LoginActivity extends BaseActivity i } @Override public void onEmptyUserName(boolean isEmpty) { - if (username == null) return; username.setError(isEmpty ? getString(R.string.required_field) : null); } @Override public void onRequire2Fa() { Toasty.warning(App.getInstance(), getString(R.string.two_factors_otp_error)).show(); - if (twoFactor == null) return; twoFactor.setVisibility(View.VISIBLE); hideProgress(); } @Override public void onEmptyPassword(boolean isEmpty) { - if (password == null) return; password.setError(isEmpty ? getString(R.string.required_field) : null); } @Override public void onEmptyEndpoint(boolean isEmpty) { - if (endpoint != null) endpoint.setError(isEmpty ? getString(R.string.required_field) : null); + endpoint.setError(isEmpty ? getString(R.string.required_field) : null); } @Override public void onSuccessfullyLoggedIn(boolean extraLogin) { - if (isEnterprise && extraLogin && !Login.hasNormalLogin()) { - MessageDialogView.newInstance(getString(R.string.details), getString(R.string.enterprise_login_warning), false, true) - .show(getSupportFragmentManager(), MessageDialogView.TAG); - } else { - checkPurchases(() -> { - hideProgress(); - Intent intent = new Intent(this, MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - finish(); - }); - } + checkPurchases(() -> { + hideProgress(); + onRestartApp(); + }); + ActivityHelper.activateLinkInterceptorActivity(this, !isEnterprise()); } @Override protected void onCreate(Bundle savedInstanceState) { @@ -197,31 +187,24 @@ public class LoginActivity extends BaseActivity i if (savedInstanceState == null) { if (getIntent() != null && getIntent().getExtras() != null) { isBasicAuth = getIntent().getExtras().getBoolean(BundleConstant.YES_NO_EXTRA); - isEnterprise = getIntent().getExtras().getBoolean(BundleConstant.IS_ENTERPRISE); + if (getIntent().getExtras().getBoolean(BundleConstant.EXTRA_TWO)) { + onOpenBrowser(); + } } } - if (endpoint != null && accessTokenCheckbox != null) { - accessTokenCheckbox.setVisibility(isEnterprise ? View.VISIBLE : View.GONE); - endpoint.setVisibility(isEnterprise ? View.VISIBLE : View.GONE); - } - if (Arrays.asList(getResources().getStringArray(R.array.languages_array_values)).contains(Locale.getDefault().getLanguage())) { - String language = PrefHelper.getString("app_language"); - PrefHelper.set("app_language", Locale.getDefault().getLanguage()); - if (!BuildConfig.DEBUG) if (language_selector != null) language_selector.setVisibility(View.GONE); - if (!Locale.getDefault().getLanguage().equals(language)) recreate(); - } - + accessTokenCheckbox.setVisibility(isEnterprise() ? View.VISIBLE : View.GONE); + endpoint.setVisibility(isEnterprise() ? View.VISIBLE : View.GONE); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); - getPresenter().onHandleAuthIntent(intent, extraLogin); + getPresenter().onHandleAuthIntent(intent); setIntent(null); } @Override protected void onResume() { super.onResume(); - getPresenter().onHandleAuthIntent(getIntent(), extraLogin); + getPresenter().onHandleAuthIntent(getIntent()); setIntent(null); } @@ -241,54 +224,21 @@ public class LoginActivity extends BaseActivity i } @Override public void showProgress(@StringRes int resId) { - if (login == null) return; login.hide(); AppHelper.hideKeyboard(login); AnimHelper.animateVisibility(progress, true); } @Override public void onBackPressed() { - if (!(this instanceof LoginChooserActivity)) { - startActivity(new Intent(this, LoginChooserActivity.class)); - finish(); - } else { - finish(); - } + startActivity(new Intent(this, LoginChooserActivity.class)); + finish(); } @Override public void hideProgress() { - if (login == null || progress == null) return; progress.setVisibility(View.GONE); login.show(); } - @Override public void onLanguageChanged(Action action) { - try { - action.run(); - recreate(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override public void onMessageDialogActionClicked(boolean isOk, @Nullable Bundle bundle) { - super.onMessageDialogActionClicked(isOk, bundle); - if (isOk) { - getUserToken(); - } - } - - @Override public void onDialogDismissed() { - super.onDialogDismissed(); - getUserToken(); - } - - private void getUserToken() { - extraLogin = true; - Uri uri = getPresenter().getAuthorizationUrl(null); - ActivityHelper.startCustomTab(this, uri); - } - protected void checkPurchases(@Nullable Action action) { getPresenter().manageViewDisposable(RxBillingService.getInstance(this, BuildConfig.DEBUG) .getPurchases(ProductType.IN_APP) @@ -301,7 +251,8 @@ public class LoginActivity extends BaseActivity i for (Purchase purchase : purchases) { String sku = purchase.sku(); if (sku != null) { - if (sku.equalsIgnoreCase(getString(R.string.donation_product_1))) { + if (sku.equalsIgnoreCase(getString(R.string + .donation_product_1))) { PrefGetter.enableAmlodTheme(); } else { PrefGetter.setProItems(); @@ -316,19 +267,12 @@ public class LoginActivity extends BaseActivity i })); } - private void showLanguage() { - LanguageBottomSheetDialog languageBottomSheetDialog = new LanguageBottomSheetDialog(); - languageBottomSheetDialog.onAttach((Context) this); - languageBottomSheetDialog.show(getSupportFragmentManager(), "LanguageBottomSheetDialog"); - } - private void doLogin() { - if (progress == null || twoFactor == null || username == null || password == null) return; if (progress.getVisibility() == View.GONE) { getPresenter().login(InputHelper.toString(username), InputHelper.toString(password), InputHelper.toString(twoFactor), - isBasicAuth, endpoint != null ? InputHelper.toString(endpoint) : null, isEnterprise); + isBasicAuth, endpoint != null ? InputHelper.toString(endpoint) : null, isEnterprise()); } } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/LoginChooserActivity.java b/app/src/main/java/com/fastaccess/ui/modules/login/LoginChooserActivity.java index 88fe0818..58cc2742 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/LoginChooserActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/login/LoginChooserActivity.java @@ -1,23 +1,64 @@ package com.fastaccess.ui.modules.login; +import android.content.Context; +import android.net.Uri; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.view.View; +import android.widget.RelativeLayout; +import com.fastaccess.BuildConfig; import com.fastaccess.R; +import com.fastaccess.data.dao.model.Login; +import com.fastaccess.helper.ActivityHelper; +import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.PrefHelper; +import com.fastaccess.ui.base.BaseActivity; +import com.fastaccess.ui.base.mvp.presenter.BasePresenter; +import com.fastaccess.ui.modules.settings.LanguageBottomSheetDialog; +import net.grandcentrix.thirtyinch.TiPresenter; + +import java.util.Arrays; +import java.util.Locale; + +import butterknife.BindView; import butterknife.OnClick; +import io.reactivex.functions.Action; /** * Created by Kosh on 28 Apr 2017, 9:03 PM */ -public class LoginChooserActivity extends LoginActivity { +public class LoginChooserActivity extends BaseActivity implements LanguageBottomSheetDialog.LanguageDialogListener { + + @BindView(R.id.language_selector) RelativeLayout language_selector; @Override protected int layout() { return R.layout.login_chooser_layout; } + @Override protected boolean isTransparent() { + return true; + } + + @Override protected boolean canBack() { + return false; + } + + @Override protected boolean isSecured() { + return true; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (Arrays.asList(getResources().getStringArray(R.array.languages_array_values)).contains(Locale.getDefault().getLanguage())) { + String language = PrefHelper.getString("app_language"); + PrefHelper.set("app_language", Locale.getDefault().getLanguage()); + if (!BuildConfig.DEBUG) language_selector.setVisibility(View.GONE); + if (!Locale.getDefault().getLanguage().equals(language)) recreate(); + } + } @OnClick(R.id.basicAuth) public void onBasicAuthClicked() { @@ -29,6 +70,34 @@ public class LoginChooserActivity extends LoginActivity { } @OnClick(R.id.enterprise) void onEnterpriseClicked() { - LoginActivity.start(this, true, true); + if (Login.hasNormalLogin()) LoginActivity.start(this, true, true); + else showMessage(R.string.error, R.string.enterprise_login_warning); + } + + @OnClick(R.id.browserLogin) void onOpenBrowser() { + LoginActivity.startOAuth(this); + } + + @OnClick(R.id.language_selector_clicker) public void onChangeLanguage() { + showLanguage(); + } + + @Override public void onLanguageChanged(Action action) { + try { + action.run(); + recreate(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @NonNull @Override public BasePresenter providePresenter() { + return new BasePresenter(); + } + + private void showLanguage() { + LanguageBottomSheetDialog languageBottomSheetDialog = new LanguageBottomSheetDialog(); + languageBottomSheetDialog.onAttach((Context) this); + languageBottomSheetDialog.show(getSupportFragmentManager(), "LanguageBottomSheetDialog"); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/LoginMvp.java b/app/src/main/java/com/fastaccess/ui/modules/login/LoginMvp.java index 608fb461..7af96f19 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/LoginMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/login/LoginMvp.java @@ -32,7 +32,7 @@ public interface LoginMvp { @NonNull Uri getAuthorizationUrl(@Nullable String endpoint); - void onHandleAuthIntent(@Nullable Intent intent, boolean extraLogin); + void onHandleAuthIntent(@Nullable Intent intent); void onTokenResponse(@Nullable AccessTokenModel response); diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/LoginPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/login/LoginPresenter.java index aae05d87..b2be2c5d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/LoginPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/login/LoginPresenter.java @@ -67,7 +67,8 @@ public class LoginPresenter extends BasePresenter implements Logi sendToView(view -> view.showMessage(R.string.error, R.string.failed_login)); } - @NonNull @Override public Uri getAuthorizationUrl(@Nullable String endpoint) { + @NonNull + @Override public Uri getAuthorizationUrl(@Nullable String endpoint) { Uri.Builder builder = new Uri.Builder(); if (!InputHelper.isEmpty(endpoint)) { endpoint = LinkParserHelper.getEndpoint(endpoint); @@ -92,25 +93,16 @@ public class LoginPresenter extends BasePresenter implements Logi .build(); } - @Override public void onHandleAuthIntent(@Nullable Intent intent, boolean extraLogin) { + @Override public void onHandleAuthIntent(@Nullable Intent intent) { if (intent != null && intent.getData() != null) { Uri uri = intent.getData(); if (uri.toString().startsWith(GithubConfigHelper.getRedirectUrl())) { String tokenCode = uri.getQueryParameter("code"); if (!InputHelper.isEmpty(tokenCode)) { - makeRestCall(LoginProvider.getLoginRestService().getAccessToken(tokenCode, GithubConfigHelper.getClientId(), - GithubConfigHelper.getSecret(), BuildConfig.APPLICATION_ID, GithubConfigHelper.getRedirectUrl()), - modelResponse -> { - if (extraLogin) { - String token = modelResponse.getToken() != null ? modelResponse.getToken() : modelResponse.getAccessToken(); - if (!InputHelper.isEmpty(token)) { - PrefGetter.setToken(token); - sendToView(view -> view.onSuccessfullyLoggedIn(false)); - return; - } - } - onTokenResponse(modelResponse); - }); + makeRestCall(LoginProvider.getLoginRestService().getAccessToken(tokenCode, + GithubConfigHelper.getClientId(), GithubConfigHelper.getSecret(), + BuildConfig.APPLICATION_ID, GithubConfigHelper.getRedirectUrl()), + this::onTokenResponse); } else { sendToView(view -> view.showMessage(R.string.error, R.string.error)); } @@ -120,27 +112,15 @@ public class LoginPresenter extends BasePresenter implements Logi @Override public void onUserResponse(@Nullable Login userModel, boolean isEnterprise) { if (userModel != null) { - manageObservable(Observable.fromPublisher(s -> { - Login currentUser = Login.getUser(); - if (currentUser != null) { - currentUser.setIsLoggedIn(false); - currentUser.save(currentUser); - } - userModel.setToken(isEnterprise ? PrefGetter.getEnterpriseToken() : PrefGetter.getToken()); - userModel.setOtpCode(isEnterprise ? PrefGetter.getEnterpriseOtpCode() : PrefGetter.getOtpCode()); - userModel.setIsLoggedIn(true); - userModel.save(userModel); - s.onNext(userModel); - s.onComplete(); - }).doOnComplete(() -> sendToView(view -> view.onSuccessfullyLoggedIn(isEnterprise)))); + manageObservable(Login.onMultipleLogin(userModel, isEnterprise, true) + .doOnComplete(() -> sendToView(view -> view.onSuccessfullyLoggedIn(isEnterprise)))); return; } sendToView(view -> view.showMessage(R.string.error, R.string.failed_login)); } - @Override public void login(@NonNull String username, @NonNull String password, - @Nullable String twoFactorCode, boolean isBasicAuth, - @Nullable String endpoint, boolean isEnterprise) { + @Override public void login(@NonNull String username, @NonNull String password, @Nullable String twoFactorCode, + boolean isBasicAuth, @Nullable String endpoint, boolean isEnterprise) { setEnterprise(isEnterprise); boolean usernameIsEmpty = InputHelper.isEmpty(username); boolean passwordIsEmpty = InputHelper.isEmpty(password); @@ -173,20 +153,18 @@ public class LoginPresenter extends BasePresenter implements Logi } } - private void accessTokenLogin(@NonNull String password, @Nullable String endpoint, @Nullable String otp, String authToken, boolean isEnterprise) { - makeRestCall(LoginProvider.getLoginRestService(authToken, otp, endpoint).loginAccessToken(), login -> { - if (!isEnterprise) { - PrefGetter.setToken(password); - } else { - if (!InputHelper.isEmpty(otp)) { - PrefGetter.setEnterpriseOtpCode(otp); - } - PrefGetter.setTokenEnterprise(authToken); - if (!InputHelper.isEmpty(endpoint)) { - PrefGetter.setEnterpriseUrl(endpoint); - } - } - onUserResponse(login, isEnterprise); - }); + private void accessTokenLogin(@NonNull String password, @Nullable String endpoint, @Nullable String otp, + @NonNull String authToken, boolean isEnterprise) { + makeRestCall(LoginProvider.getLoginRestService(authToken, otp, endpoint).loginAccessToken(), + login -> { + if (!isEnterprise) { + PrefGetter.setToken(password); + } else { + PrefGetter.setEnterpriseOtpCode(otp); + PrefGetter.setTokenEnterprise(authToken); + PrefGetter.setEnterpriseUrl(endpoint); + } + onUserResponse(login, isEnterprise); + }); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java index 5cf6515d..72833f2c 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java @@ -17,6 +17,8 @@ import com.fastaccess.ui.modules.feeds.FeedsFragment; import com.fastaccess.ui.modules.main.issues.pager.MyIssuesPagerFragment; import com.fastaccess.ui.modules.main.pullrequests.pager.MyPullsPagerFragment; +import java.util.Observable; + import static com.fastaccess.helper.ActivityHelper.getVisibleFragment; import static com.fastaccess.helper.AppHelper.getFragmentByTag; @@ -31,6 +33,10 @@ public class MainPresenter extends BasePresenter implements MainMv manageDisposable(RxHelper.getObserver(RestProvider.getUserService(isEnterprise()).getUser()) .flatMap(login -> { login.setIsLoggedIn(true); + login.setEnterpriseUrl(isEnterprise() ? PrefGetter.getEnterpriseUrl() : null); + login.setToken(isEnterprise() ? PrefGetter.getEnterpriseToken() : PrefGetter.getToken()); + login.setOtpCode(isEnterprise() ? PrefGetter.getEnterpriseOtpCode() : PrefGetter.getOtpCode()); + login.setIsEnterprise(isEnterprise()); return login.update(login); }) .subscribe(login -> { diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationActivity.java b/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationActivity.java index d27bd001..31821191 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationActivity.java @@ -9,12 +9,16 @@ import android.support.v4.app.Fragment; import com.fastaccess.R; import com.fastaccess.data.dao.FragmentPagerAdapterModel; +import com.fastaccess.data.dao.GroupedNotificationModel; import com.fastaccess.helper.AppHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.base.BaseFragment; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import com.fastaccess.ui.modules.main.MainActivity; +import com.fastaccess.ui.modules.notification.all.AllNotificationsFragment; +import com.fastaccess.ui.modules.notification.callback.OnNotificationChangedListener; +import com.fastaccess.ui.modules.notification.unread.UnreadNotificationsFragment; import com.fastaccess.ui.widgets.ViewPagerView; import net.grandcentrix.thirtyinch.TiPresenter; @@ -25,7 +29,7 @@ import butterknife.BindView; * Created by Kosh on 27 Feb 2017, 12:36 PM */ -public class NotificationActivity extends BaseActivity { +public class NotificationActivity extends BaseActivity implements OnNotificationChangedListener { @BindView(R.id.tabs) TabLayout tabs; @BindView(R.id.notificationContainer) @@ -79,13 +83,21 @@ public class NotificationActivity extends BaseActivity { super.onBackPressed(); } + @Override public void onNotificationChanged(@NonNull GroupedNotificationModel notification, int index) { + if (pager != null && pager.getAdapter() != null) { + if (index == 0) { + UnreadNotificationsFragment fragment = (UnreadNotificationsFragment) pager.getAdapter().instantiateItem(pager, 0); + fragment.onNotifyNotificationChanged(notification); + } else { + AllNotificationsFragment fragment = (AllNotificationsFragment) pager.getAdapter().instantiateItem(pager, 1); + fragment.onNotifyNotificationChanged(notification); + } + } + } + private void setupTabs() { pager.setAdapter(new FragmentsPagerAdapter(getSupportFragmentManager(), FragmentPagerAdapterModel.buildForNotifications(this))); tabs.setupWithViewPager(pager); } - - private TabLayout.Tab getTab(int titleId) { - return tabs.newTab().setText(titleId); - } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java index d3f11779..a9f021d7 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.notification.all; +import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; @@ -21,6 +22,7 @@ import com.fastaccess.provider.tasks.notification.ReadNotificationService; import com.fastaccess.ui.adapter.NotificationsAdapter; import com.fastaccess.ui.adapter.viewholder.NotificationsViewHolder; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.notification.callback.OnNotificationChangedListener; import com.fastaccess.ui.widgets.AppbarRefreshLayout; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; @@ -40,11 +42,24 @@ public class AllNotificationsFragment extends BaseFragment { diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/callback/OnNotificationChangedListener.java b/app/src/main/java/com/fastaccess/ui/modules/notification/callback/OnNotificationChangedListener.java new file mode 100644 index 00000000..1df8c5f0 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/callback/OnNotificationChangedListener.java @@ -0,0 +1,10 @@ +package com.fastaccess.ui.modules.notification.callback; + +import android.support.annotation.NonNull; + +import com.fastaccess.data.dao.GroupedNotificationModel; + +public interface OnNotificationChangedListener { + + void onNotificationChanged(@NonNull GroupedNotificationModel notification, int index); +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationMvp.java b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationMvp.java index 99732662..40fd70a4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationMvp.java @@ -28,6 +28,8 @@ public interface UnreadNotificationMvp { void onReadNotification(@NonNull Notification notification); void onClick(@NonNull String url); + + void onNotifyNotificationChanged(@NonNull GroupedNotificationModel notification); } interface Presenter extends BaseViewHolder.OnItemClickListener { diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsFragment.java b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsFragment.java index 4e78d797..bdaae95d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsFragment.java @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.notification.unread; +import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; @@ -18,6 +19,7 @@ import com.fastaccess.provider.tasks.notification.ReadNotificationService; import com.fastaccess.ui.adapter.NotificationsAdapter; import com.fastaccess.ui.adapter.viewholder.NotificationsViewHolder; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.notification.callback.OnNotificationChangedListener; import com.fastaccess.ui.widgets.AppbarRefreshLayout; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; @@ -36,6 +38,19 @@ public class UnreadNotificationsFragment extends BaseFragment 0 ? (repoModel.getSize() * 1000) : repoModel.getSize(); date.setText(SpannableBuilder.builder() @@ -380,81 +381,7 @@ public class RepoPagerActivity extends BaseActivity { - dismissed[0] = true; - }); - } + if (!PrefGetter.isRepoGuideShowed()) {} onRepoWatched(getPresenter().isWatched()); onRepoStarred(getPresenter().isStarred()); onRepoForked(getPresenter().isForked()); @@ -635,16 +562,7 @@ public class RepoPagerActivity extends BaseActivity { - }); - adapter.setGuideListener((itemView, model) -> - new MaterialTapTargetPrompt.Builder(getActivity()) - .setTarget(itemView.findViewById(R.id.menu)) - .setPrimaryText(R.string.options) - .setSecondaryText(R.string.click_file_option_hint) - .setCaptureTouchEventOutsidePrompt(true) - .setBackgroundColourAlpha(244) - .setBackgroundColour(ViewHelper.getAccentColor(getContext())) - .setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() { - @Override - public void onHidePrompt(MotionEvent motionEvent, boolean b) { - ActivityHelper.hideDismissHints(RepoFilesFragment.this.getContext()); - } - - @Override - public void onHidePromptComplete() { - - } - }) - .show()); - adapter.notifyDataSetChanged();// call it notify the adapter to show the guide immediately. - } - } - } - @Override public void showProgress(@StringRes int resId) { refresh.setRefreshing(true); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesFragment.java index c1c844a8..07b7e805 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesFragment.java @@ -32,7 +32,6 @@ import java.util.ArrayList; import java.util.List; import butterknife.BindView; -import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt; /** * Created by Kosh on 03 Dec 2016, 3:56 PM @@ -103,37 +102,6 @@ public class RepoReleasesFragment extends BaseFragment - new MaterialTapTargetPrompt.Builder(getActivity()) - .setTarget(itemView.findViewById(R.id.download)) - .setPrimaryText(R.string.download) - .setSecondaryText(R.string.click_here_to_download_release_hint) - .setCaptureTouchEventOutsidePrompt(true) - .setBackgroundColourAlpha(244) - .setBackgroundColour(ViewHelper.getAccentColor(getContext())) - .setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() { - @Override - public void onHidePrompt(MotionEvent motionEvent, boolean b) { - ActivityHelper.hideDismissHints(RepoReleasesFragment.this.getContext()); - } - - @Override - public void onHidePromptComplete() { - - } - }) - .show()); - adapter.notifyDataSetChanged();// call it notify the adapter to show the guide immediately. - ActivityHelper.showDismissHints(getContext(), () -> { - }); - } - } - } - @NonNull @Override public RepoReleasesPresenter providePresenter() { return new RepoReleasesPresenter(); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java index b22b6343..6a447081 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java @@ -25,6 +25,7 @@ import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; import com.fastaccess.helper.ParseDateFormat; import com.fastaccess.helper.ViewHelper; import com.fastaccess.provider.scheme.LinkParserHelper; @@ -74,7 +75,8 @@ public class IssuePagerActivity extends BaseActivity implements I } @Override public void onActivityCreated(@Nullable Intent intent) { + Logger.e(isEnterprise()); if (intent != null && intent.getExtras() != null) { issueModel = intent.getExtras().getParcelable(BundleConstant.ITEM); issueNumber = intent.getExtras().getInt(BundleConstant.ID); diff --git a/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java index 7d0c7238..3608e8b8 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java @@ -102,7 +102,6 @@ public class UserPagerActivity extends BaseActivity { - if (getContentDescription() != null) { - if (toast != null) toast.cancel(); - toast = Toast.makeText(App.getInstance(), getContentDescription(), Toast.LENGTH_SHORT); - toast.setGravity(Gravity.CENTER, 0, 0); - toast.show(); - return true; - } - return false; - }); + TooltipCompat.setTooltipText(this, getContentDescription()); } } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/RecyclerFastScroller.java b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/RecyclerFastScroller.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java b/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java b/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/zzhoujay/markdown/style/CodeSpan.java b/app/src/main/java/com/zzhoujay/markdown/style/CodeSpan.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/zzhoujay/markdown/style/FontSpan.java b/app/src/main/java/com/zzhoujay/markdown/style/FontSpan.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/zzhoujay/markdown/style/LinkSpan.java b/app/src/main/java/com/zzhoujay/markdown/style/LinkSpan.java old mode 100755 new mode 100644 diff --git a/app/src/main/java/com/zzhoujay/markdown/style/MarkDownQuoteSpan.java b/app/src/main/java/com/zzhoujay/markdown/style/MarkDownQuoteSpan.java old mode 100755 new mode 100644 diff --git a/app/src/main/res/drawable-nodpi/web_hi_res_512.png b/app/src/main/res/drawable-nodpi/web_hi_res_512.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_edittext.9.png b/app/src/main/res/drawable-xxxhdpi/ic_edittext.9.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_timeline_arrow_left.9.png b/app/src/main/res/drawable-xxxhdpi/ic_timeline_arrow_left.9.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/layouts/other_layouts/layout/drawer_header.xml b/app/src/main/res/layouts/other_layouts/layout/drawer_header.xml index c98555dd..bfe21c45 100644 --- a/app/src/main/res/layouts/other_layouts/layout/drawer_header.xml +++ b/app/src/main/res/layouts/other_layouts/layout/drawer_header.xml @@ -11,7 +11,7 @@ android:id="@+id/navAvatarLayout" android:layout_width="@dimen/header_icon_zie" android:layout_height="@dimen/header_icon_zie" - android:layout_margin="@dimen/spacing_xs_large"/> + android:layout_margin="@dimen/spacing_xs_large" /> + android:background="?selectableItemBackground" + android:orientation="horizontal"> - + android:layout_weight="1" + android:orientation="vertical"> - + + + + + + android:padding="@dimen/spacing_normal" + android:src="@drawable/ic_arrow_drop_down" /> + - + tools:visibility="visible" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/mipmap-nodpi/foreground.png b/app/src/main/res/mipmap-nodpi/foreground.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml old mode 100755 new mode 100644 diff --git a/app/src/main/res/values-w820dp-land/dimens.xml b/app/src/main/res/values-w820dp-land/dimens.xml old mode 100755 new mode 100644 diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml old mode 100755 new mode 100644