mirror of
https://github.com/k0shk0sh/FastHub.git
synced 2026-02-01 15:56:14 +00:00
Merge branch 'development' into patch-1
This commit is contained in:
commit
7f394dc9cb
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,7 +3,7 @@
|
||||
/local.properties
|
||||
.DS_Store
|
||||
/build
|
||||
/gradle.properties
|
||||
/release_gradle.properties
|
||||
/.idea/
|
||||
/app/google-services.json
|
||||
/app/build/
|
||||
|
||||
46
.travis.yml
46
.travis.yml
@ -1,46 +0,0 @@
|
||||
language: android
|
||||
|
||||
android:
|
||||
components:
|
||||
- tools
|
||||
- platform-tools
|
||||
- tools # Upgrade again after upgrading platform-tools.
|
||||
|
||||
jdk: oraclejdk8
|
||||
|
||||
sudo: required
|
||||
|
||||
before_install:
|
||||
# Skip build if the commit message contains [skip travis] or [travis skip]
|
||||
- >
|
||||
echo "$TRAVIS_COMMIT_MESSAGE"
|
||||
| grep -E '\[(skip travis|travis skip)\]'
|
||||
&& echo "[skip travis] has been found, exiting."
|
||||
&& exit 0 || true
|
||||
|
||||
before_script:
|
||||
- mkdir -p $ANDROID_HOME/licenses
|
||||
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
|
||||
- echo -e "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
|
||||
- echo -e "\n504667f4c0de7af1a06de9f4b1727b84351f2910" > $ANDROID_HOME/licenses/android-sdk-preview-license
|
||||
|
||||
script:
|
||||
- ./gradlew clean assembleDebug --no-daemon --stacktrace
|
||||
|
||||
before_cache:
|
||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.gradle/caches/
|
||||
- $HOME/.gradle/wrapper/
|
||||
- $HOME/.android/build-cache
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
webhooks: https://www.travisbuddy.com/
|
||||
on_success: never
|
||||
@ -1,9 +1,9 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.apollographql.android'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'com.apollographql.android'
|
||||
apply plugin: 'com.novoda.build-properties'
|
||||
apply plugin: 'jacoco-android'
|
||||
apply plugin: 'io.fabric'
|
||||
|
||||
buildProperties {
|
||||
@ -11,7 +11,7 @@ buildProperties {
|
||||
file rootProject.file('debug_gradle.properties')
|
||||
}
|
||||
secrets {
|
||||
file rootProject.file('gradle.properties')
|
||||
file rootProject.file('release_gradle.properties')
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,14 +24,13 @@ android {
|
||||
storePassword((buildProperties.secrets['android_store_password'] | buildProperties.notThere['android_store_password']).string)
|
||||
}
|
||||
}
|
||||
compileSdkVersion 27
|
||||
buildToolsVersion '27.0.3'
|
||||
compileSdkVersion 29
|
||||
defaultConfig {
|
||||
applicationId "com.fastaccess.github"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode 467
|
||||
versionName "4.6.7"
|
||||
targetSdkVersion 29
|
||||
versionCode 469
|
||||
versionName "4.6.9"
|
||||
buildConfigString "GITHUB_CLIENT_ID", (buildProperties.secrets['github_client_id'] | buildProperties.notThere['github_client_id']).string
|
||||
buildConfigString "GITHUB_SECRET", (buildProperties.secrets['github_secret'] | buildProperties.notThere['github_secret']).string
|
||||
buildConfigString "IMGUR_CLIENT_ID", (buildProperties.secrets['imgur_client_id'] | buildProperties.notThere['imgur_client_id']).string
|
||||
@ -39,7 +38,7 @@ android {
|
||||
buildConfigField "String", "REST_URL", '"https://api.github.com/"'
|
||||
buildConfigField "String", "IMGUR_URL", '"https://api.imgur.com/3/"'
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
includeCompileClasspath true
|
||||
@ -90,7 +89,8 @@ android {
|
||||
}
|
||||
|
||||
configurations {
|
||||
all*.exclude module: 'annotations'
|
||||
all*.exclude module: 'javax.annotation'
|
||||
all*.exclude group: 'org.jetbrains', module: 'annotations-java5'
|
||||
}
|
||||
|
||||
packagingOptions { exclude 'META-INF/rxjava.properties' }
|
||||
@ -118,25 +118,28 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation "com.android.support:appcompat-v7:${supportVersion}"
|
||||
implementation "com.android.support:design:${supportVersion}"
|
||||
implementation "com.android.support:cardview-v7:${supportVersion}"
|
||||
implementation "com.android.support:recyclerview-v7:${supportVersion}"
|
||||
implementation "com.android.support:preference-v14:${supportVersion}"
|
||||
implementation "com.android.support:customtabs:${supportVersion}"
|
||||
implementation "com.android.support:palette-v7:${supportVersion}"
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'com.google.android.material:material:1.0.0'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
|
||||
implementation 'androidx.browser:browser:1.2.0'
|
||||
implementation 'androidx.palette:palette:1.0.0'
|
||||
implementation 'androidx.annotation:annotation:1.1.0'
|
||||
implementation 'androidx.core:core:1.1.0'
|
||||
implementation "net.grandcentrix.thirtyinch:thirtyinch:${thirtyinchVersion}"
|
||||
implementation "net.grandcentrix.thirtyinch:thirtyinch-rx2:${thirtyinchVersion}"
|
||||
implementation "com.squareup.retrofit2:retrofit:${retrofit}"
|
||||
implementation "com.squareup.retrofit2:converter-gson:${retrofit}"
|
||||
implementation "com.squareup.retrofit2:adapter-rxjava2:${retrofit}"
|
||||
implementation "com.squareup.retrofit2:converter-scalars:${retrofit}"
|
||||
implementation "com.github.bumptech.glide:glide:${glideVersion}"
|
||||
implementation 'cn.gavinliu.android.lib:ShapedImageView:0.8.3'
|
||||
implementation 'cn.gavinliu:ShapedImageView:0.8.7'
|
||||
implementation "com.jakewharton:butterknife:${butterKnifeVersion}"
|
||||
implementation 'it.sephiroth.android.library.bottomnavigation:bottom-navigation:2.0.2'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.1.10'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.15'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:4.2.1'
|
||||
implementation 'com.annimon:stream:1.1.9'
|
||||
implementation 'com.github.GrenderG:Toasty:1.1.3'
|
||||
implementation 'com.github.k0shk0sh:RetainedDateTimePickers:1.0.2'
|
||||
@ -153,39 +156,34 @@ dependencies {
|
||||
implementation "com.atlassian.commonmark:commonmark-ext-gfm-tables:${commonmark}"
|
||||
implementation "com.atlassian.commonmark:commonmark-ext-ins:${commonmark}"
|
||||
implementation "com.atlassian.commonmark:commonmark-ext-yaml-front-matter:${commonmark}"
|
||||
implementation "com.google.firebase:firebase-core:${gms}"
|
||||
implementation "com.google.firebase:firebase-messaging:${gms}"
|
||||
implementation "com.google.firebase:firebase-database:${gms}"
|
||||
implementation "com.google.android.gms:play-services-base:${gms}"
|
||||
implementation "com.google.firebase:firebase-core:17.2.1"
|
||||
implementation "com.google.firebase:firebase-messaging:20.1.0"
|
||||
implementation "com.google.firebase:firebase-database:19.2.0"
|
||||
implementation "com.google.android.gms:play-services-base:17.1.0"
|
||||
implementation('com.github.b3er.rxfirebase:firebase-database-kotlin:11.2.0') { transitive = false }
|
||||
implementation('com.github.b3er.rxfirebase:firebase-database:11.2.0') { transitive = false }
|
||||
implementation('com.crashlytics.sdk.android:crashlytics:2.9.0@aar') { transitive = true }
|
||||
implementation "com.github.miguelbcr:RxBillingService:0.0.3"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:${kotlin_version}"
|
||||
implementation 'org.jsoup:jsoup:1.10.3'
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
|
||||
implementation 'org.jsoup:jsoup:1.12.1'
|
||||
implementation "com.evernote:android-state:${state_version}"
|
||||
implementation "petrov.kristiyan:colorpicker-library:1.1.4"
|
||||
implementation 'com.apollographql.apollo:apollo-rx2-support:0.4.1'
|
||||
implementation 'com.apollographql.apollo:apollo-rx2-support:1.2.2'
|
||||
implementation("com.apollographql.apollo:apollo-runtime:1.2.2")
|
||||
implementation 'com.jaredrummler:android-device-names:1.1.5'
|
||||
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
|
||||
implementation 'com.airbnb.android:lottie:2.2.5'
|
||||
implementation 'com.airbnb.android:lottie:3.0.7'
|
||||
implementation 'com.firebase:firebase-jobdispatcher:0.8.2'
|
||||
|
||||
compileOnly "org.projectlombok:lombok:${lombokVersion}"
|
||||
|
||||
kapt "org.projectlombok:lombok:${lombokVersion}"
|
||||
kapt "com.evernote:android-state-processor:${state_version}"
|
||||
kapt "com.jakewharton:butterknife-compiler:${butterKnifeVersion}"
|
||||
kapt 'com.github.matthiasrobbers:shortbread-compiler:1.0.1'
|
||||
kapt "io.requery:requery-processor:${requery}"
|
||||
// testImplementation "net.grandcentrix.thirtyinch:thirtyinch-test:$thirtyinchVersion"
|
||||
testImplementation "junit:junit:${junitVersion}"
|
||||
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
|
||||
testImplementation "org.assertj:assertj-core:${assertjVersion}"
|
||||
androidTestImplementation "com.android.support:support-annotations:${supportVersion}"
|
||||
androidTestImplementation "org.mockito:mockito-core:${mockitoVersion}"
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.1'
|
||||
androidTestImplementation 'com.android.support.test:rules:1.0.1'
|
||||
androidTestImplementation "com.android.support.test.espresso:espresso-intents:${espresseVersion}"
|
||||
androidTestImplementation "com.android.support.test.espresso:espresso-core:${espresseVersion}"
|
||||
kapt "com.github.bumptech.glide:compiler:$glideVersion"
|
||||
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
@ -1,77 +0,0 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.IntRange;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import android.support.test.espresso.UiController;
|
||||
import android.support.test.espresso.ViewAction;
|
||||
import android.view.View;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
import it.sephiroth.android.library.bottomnavigation.BottomNavigation;
|
||||
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 05 May 2017, 9:23 PM
|
||||
*/
|
||||
|
||||
public class TestHelper {
|
||||
|
||||
public static Matcher<View> textInputLayoutHasHint(final String expectedErrorText) {
|
||||
return new TypeSafeMatcher<View>() {
|
||||
@Override public boolean matchesSafely(View view) {
|
||||
if (!(view instanceof TextInputLayout)) {
|
||||
return false;
|
||||
}
|
||||
CharSequence error = ((TextInputLayout) view).getHint();
|
||||
return error != null && expectedErrorText.equals(error.toString());
|
||||
}
|
||||
|
||||
@Override public void describeTo(Description description) {}
|
||||
};
|
||||
}
|
||||
|
||||
public static Matcher<View> textInputLayoutHasError(final String expectedErrorText) {
|
||||
return new TypeSafeMatcher<View>() {
|
||||
@Override public boolean matchesSafely(View view) {
|
||||
if (!(view instanceof TextInputLayout)) {
|
||||
return false;
|
||||
}
|
||||
CharSequence error = ((TextInputLayout) view).getError();
|
||||
return error != null && expectedErrorText.equals(error.toString());
|
||||
}
|
||||
|
||||
@Override public void describeTo(Description description) {}
|
||||
};
|
||||
}
|
||||
|
||||
public static Matcher<View> bottomNavSelection(@IntRange(from = 0, to = 3) final int position) {
|
||||
return new TypeSafeMatcher<View>() {
|
||||
@Override public boolean matchesSafely(View view) {
|
||||
return view instanceof BottomNavigation && position == ((BottomNavigation) view).getSelectedIndex();
|
||||
}
|
||||
|
||||
@Override public void describeTo(Description description) {}
|
||||
};
|
||||
}
|
||||
|
||||
public static ViewAction bottomNavAction(@IntRange(from = 0, to = 3) final int index) {
|
||||
return new ViewAction() {
|
||||
|
||||
@Override public Matcher<View> getConstraints() {
|
||||
return isAssignableFrom(BottomNavigation.class);
|
||||
}
|
||||
|
||||
@Override public String getDescription() {
|
||||
return "BottomNavigation";
|
||||
}
|
||||
|
||||
@Override public void perform(UiController uiController, View view) {
|
||||
((BottomNavigation) view).setSelectedIndex(index, false);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -1,54 +0,0 @@
|
||||
package com.fastaccess.ui.modules.login;
|
||||
|
||||
|
||||
import android.support.test.filters.LargeTest;
|
||||
import android.support.test.rule.ActivityTestRule;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.fastaccess.R;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
|
||||
import static android.support.test.espresso.action.ViewActions.typeText;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static com.fastaccess.helper.TestHelper.textInputLayoutHasError;
|
||||
import static org.hamcrest.core.IsNot.not;
|
||||
|
||||
@RunWith(AndroidJUnit4.class) @LargeTest
|
||||
public class LoginActivityTest {
|
||||
|
||||
@Rule public ActivityTestRule<LoginActivity> testRule = new ActivityTestRule<>(LoginActivity.class);
|
||||
|
||||
@Test public void successLoginClickSuccessTest() {
|
||||
String username = "username";
|
||||
String password = "password";
|
||||
onView(withId(R.id.usernameEditText)).perform(typeText(username), closeSoftKeyboard());
|
||||
onView(withId(R.id.passwordEditText)).perform(typeText(password), closeSoftKeyboard());
|
||||
onView(withId(R.id.login)).perform(click());
|
||||
onView(withId(R.id.progress)).check(matches(isDisplayed()));
|
||||
}
|
||||
|
||||
@Test public void usernameErrorTest() {
|
||||
String password = "password";
|
||||
onView(withId(R.id.passwordEditText)).perform(typeText(password), closeSoftKeyboard());
|
||||
onView(withId(R.id.login)).perform(click());
|
||||
onView(withId(R.id.progress)).check(matches(not(isDisplayed())));
|
||||
onView(withId(R.id.username)).check(matches(textInputLayoutHasError(testRule.getActivity().getString(R.string.required_field))));
|
||||
}
|
||||
|
||||
@Test public void passwordErrorTest() {
|
||||
String username = "username";
|
||||
onView(withId(R.id.usernameEditText)).perform(typeText(username), closeSoftKeyboard());
|
||||
onView(withId(R.id.login)).perform(click());
|
||||
onView(withId(R.id.progress)).check(matches(not(isDisplayed())));
|
||||
onView(withId(R.id.password)).check(matches(textInputLayoutHasError(testRule.getActivity().getString(R.string.required_field))));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,39 +0,0 @@
|
||||
package com.fastaccess.ui.modules.login;
|
||||
|
||||
|
||||
import android.support.test.espresso.intent.rule.IntentsTestRule;
|
||||
import android.support.test.filters.LargeTest;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.ui.modules.login.chooser.LoginChooserActivity;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.intent.Intents.intended;
|
||||
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static com.fastaccess.helper.TestHelper.textInputLayoutHasHint;
|
||||
|
||||
@RunWith(AndroidJUnit4.class) @LargeTest
|
||||
public class LoginChooserActivityTest {
|
||||
|
||||
@Rule public IntentsTestRule<LoginChooserActivity> intentTestRule = new IntentsTestRule<>(LoginChooserActivity.class);
|
||||
|
||||
@Test public void basicAuthButtonTest() {
|
||||
onView(withId(R.id.basicAuth)).perform(click());
|
||||
intended(hasComponent(LoginActivity.class.getName()));
|
||||
onView(withId(R.id.password)).check(matches(textInputLayoutHasHint(intentTestRule.getActivity().getString(R.string.password))));
|
||||
}
|
||||
|
||||
@Test public void accessTokenButtonTest() {
|
||||
onView(withId(R.id.accessToken)).perform(click());
|
||||
intended(hasComponent(LoginActivity.class.getName()));
|
||||
onView(withId(R.id.password)).check(matches(textInputLayoutHasHint(intentTestRule.getActivity().getString(R.string.access_token))));
|
||||
}
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
package com.fastaccess.ui.modules.main;
|
||||
|
||||
import android.support.test.espresso.intent.rule.IntentsTestRule;
|
||||
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.helper.AppHelper;
|
||||
import com.fastaccess.ui.modules.feeds.FeedsFragment;
|
||||
import com.fastaccess.ui.modules.login.chooser.LoginChooserActivity;
|
||||
import com.fastaccess.ui.modules.main.issues.pager.MyIssuesPagerFragment;
|
||||
import com.fastaccess.ui.modules.main.pullrequests.pager.MyPullsPagerFragment;
|
||||
import com.fastaccess.ui.modules.notification.NotificationActivity;
|
||||
import com.fastaccess.ui.modules.search.SearchActivity;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.intent.Intents.intended;
|
||||
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static com.fastaccess.helper.TestHelper.bottomNavAction;
|
||||
import static com.fastaccess.helper.TestHelper.bottomNavSelection;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 06 May 2017, 2:11 AM
|
||||
*/
|
||||
|
||||
public class MainActivityTest {
|
||||
@Rule public IntentsTestRule<MainActivity> testRule = new IntentsTestRule<>(MainActivity.class);
|
||||
|
||||
@Test public void noUserTest() {
|
||||
assertEquals(testRule.getActivity().isLoggedIn(), false);
|
||||
intended(hasComponent(LoginChooserActivity.class.getName()));
|
||||
}
|
||||
|
||||
@Test public void onInitTest() {
|
||||
assertEquals(testRule.getActivity().isLoggedIn(), true);
|
||||
onView(withId(R.id.bottomNavigation)).check(matches(bottomNavSelection(0)));
|
||||
assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), FeedsFragment.TAG));
|
||||
}
|
||||
|
||||
@Test public void onSelectIssuesTabTest() {
|
||||
assertEquals(testRule.getActivity().isLoggedIn(), true);
|
||||
onView(withId(R.id.bottomNavigation)).perform(bottomNavAction(1))
|
||||
.check(matches(bottomNavSelection(1)));
|
||||
assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), MyIssuesPagerFragment.TAG));
|
||||
}
|
||||
|
||||
@Test public void onSelectPullRequestsTabTest() {
|
||||
assertEquals(testRule.getActivity().isLoggedIn(), true);
|
||||
onView(withId(R.id.bottomNavigation)).perform(bottomNavAction(2))
|
||||
.check(matches(bottomNavSelection(2)));
|
||||
assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), MyPullsPagerFragment.TAG));
|
||||
}
|
||||
|
||||
@Test public void startNotificationsIntentTest() {
|
||||
onView(withId(R.id.notifications)).perform(click());
|
||||
intended(hasComponent(NotificationActivity.class.getName()));
|
||||
}
|
||||
|
||||
@Test public void startSearchIntentTest() {
|
||||
onView(withId(R.id.search)).perform(click());
|
||||
intended(hasComponent(SearchActivity.class.getName()));
|
||||
}
|
||||
}
|
||||
@ -1,22 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest package="com.fastaccess"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.fastaccess"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<uses-permission android:name="com.android.vending.BILLING"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_PHONE_STATE"
|
||||
tools:node="remove"/>
|
||||
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
||||
android:resource="@drawable/ic_notification"/>
|
||||
tools:node="remove" />
|
||||
|
||||
<application
|
||||
android:name=".App"
|
||||
@ -33,15 +29,15 @@
|
||||
<activity
|
||||
android:name=".ui.modules.main.donation.CheckPurchaseActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:theme="@style/ThemeTranslucent"/>
|
||||
android:theme="@style/ThemeTranslucent" />
|
||||
<activity
|
||||
android:name=".ui.modules.main.MainActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@style/SplashTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
@ -52,14 +48,14 @@
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/LoginTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="login"
|
||||
android:scheme="fasthub"/>
|
||||
android:scheme="fasthub" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
@ -68,14 +64,14 @@
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/LoginTheme"/>
|
||||
android:theme="@style/LoginTheme" />
|
||||
<activity
|
||||
android:name=".ui.modules.user.UserPagerActivity"
|
||||
android:label="@string/user"
|
||||
android:parentActivityName=".ui.modules.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.repos.RepoPagerActivity"
|
||||
@ -83,7 +79,7 @@
|
||||
android:parentActivityName=".ui.modules.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.repos.issues.issue.details.IssuePagerActivity"
|
||||
@ -92,19 +88,19 @@
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.repos.issues.create.CreateIssueActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:label="@string/create_issue"/>
|
||||
android:label="@string/create_issue" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.pull_requests.pull_request.details.PullRequestPagerActivity"
|
||||
android:label="@string/pull_request"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.repos.code.commit.details.CommitPagerActivity"
|
||||
@ -113,21 +109,21 @@
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.code.CodeViewerActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:label="@string/viewer"/>
|
||||
android:label="@string/viewer" />
|
||||
<activity
|
||||
android:name=".ui.modules.editor.EditorActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:label="@string/markdown"
|
||||
android:windowSoftInputMode="adjustResize"/>
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.modules.gists.create.CreateGistActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:label="@string/create_gist"/>
|
||||
android:label="@string/create_gist" />
|
||||
<activity
|
||||
android:name=".ui.modules.gists.gist.GistActivity"
|
||||
android:label="@string/gist"
|
||||
@ -135,14 +131,14 @@
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.search.SearchActivity"
|
||||
android:parentActivityName=".ui.modules.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.notification.NotificationActivity"
|
||||
@ -150,48 +146,48 @@
|
||||
android:parentActivityName=".ui.modules.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.about.FastHubAboutActivity"
|
||||
android:theme="@style/AppTheme.AboutActivity.Light"/>
|
||||
android:theme="@style/AppTheme.AboutActivity.Light" />
|
||||
<activity
|
||||
android:name=".ui.modules.pinned.PinnedReposActivity"
|
||||
android:label="@string/pinned"/>
|
||||
android:label="@string/pinned" />
|
||||
<activity
|
||||
android:name=".ui.modules.gists.GistsListActivity"
|
||||
android:label="@string/public_gists"/>
|
||||
<activity android:name=".ui.modules.profile.org.teams.details.TeamPagerActivity"/>
|
||||
android:label="@string/public_gists" />
|
||||
<activity android:name=".ui.modules.profile.org.teams.details.TeamPagerActivity" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.code.files.activity.RepoFilesActivity"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity android:name=".ui.modules.filter.issues.FilterIssuesActivity"/>
|
||||
<activity android:name=".ui.modules.main.donation.DonationActivity"/>
|
||||
<activity android:name=".ui.modules.repos.code.commit.viewer.FullCommitFileActivity"/>
|
||||
<activity android:name=".ui.modules.filter.issues.FilterIssuesActivity" />
|
||||
<activity android:name=".ui.modules.main.donation.DonationActivity" />
|
||||
<activity android:name=".ui.modules.repos.code.commit.viewer.FullCommitFileActivity" />
|
||||
<activity
|
||||
android:name=".ui.modules.search.repos.files.SearchFileActivity"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.settings.SettingsActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"/>
|
||||
android:configChanges="keyboard|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".ui.modules.settings.category.SettingsCategoryActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"/>
|
||||
android:configChanges="keyboard|orientation|screenSize" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.code.releases.ReleasesListActivity"
|
||||
android:label="@string/releases"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.trending.TrendingActivity"
|
||||
@ -200,41 +196,41 @@
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.main.MainActivity"/>
|
||||
android:value=".ui.modules.main.MainActivity" />
|
||||
</activity>
|
||||
<activity android:name=".ui.modules.theme.ThemeActivity"/>
|
||||
<activity android:name=".ui.modules.theme.ThemeActivity" />
|
||||
<activity
|
||||
android:name=".ui.modules.theme.code.ThemeCodeActivity"
|
||||
android:label="@string/theme_title"/>
|
||||
android:label="@string/theme_title" />
|
||||
<activity
|
||||
android:name=".ui.modules.main.donation.DonateActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:theme="@style/ThemeTranslucent"/>
|
||||
android:theme="@style/ThemeTranslucent" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.wiki.WikiActivity"
|
||||
android:label="@string/gollum"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.main.premium.PremiumActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateAlwaysHidden"/>
|
||||
android:windowSoftInputMode="stateAlwaysHidden" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.git.EditRepoFileActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"
|
||||
android:label="@string/markdown"
|
||||
android:windowSoftInputMode="adjustResize"/>
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.modules.repos.code.commit.history.FileCommitHistoryActivity"
|
||||
android:label="@string/commits"
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.repos.projects.details.ProjectPagerActivity"
|
||||
@ -242,7 +238,7 @@
|
||||
android:parentActivityName=".ui.modules.repos.RepoPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.repos.RepoPagerActivity"/>
|
||||
android:value=".ui.modules.repos.RepoPagerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.modules.profile.org.project.OrgProjectActivity"
|
||||
@ -250,16 +246,16 @@
|
||||
android:parentActivityName=".ui.modules.user.UserPagerActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.modules.user.UserPagerActivity"/>
|
||||
android:value=".ui.modules.user.UserPagerActivity" />
|
||||
</activity>
|
||||
|
||||
<activity android:name=".ui.modules.main.playstore.PlayStoreWarningActivity"/>
|
||||
<activity android:name=".ui.modules.main.playstore.PlayStoreWarningActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.modules.repos.pull_requests.pull_request.details.files.fullscreen.FullScreenFileChangeActivity"
|
||||
android:configChanges="keyboard|orientation|screenSize"/>
|
||||
android:configChanges="keyboard|orientation|screenSize" />
|
||||
|
||||
<activity android:name=".ui.modules.search.SearchUserActivity"/>
|
||||
<activity android:name=".ui.modules.search.SearchUserActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.modules.parser.LinksParserActivity"
|
||||
@ -267,37 +263,37 @@
|
||||
android:noHistory="true"
|
||||
android:theme="@android:style/Theme.NoDisplay">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<data
|
||||
android:host="github.com"
|
||||
android:scheme="http"/>
|
||||
android:scheme="http" />
|
||||
<data
|
||||
android:host="github.com"
|
||||
android:scheme="https"/>
|
||||
android:scheme="https" />
|
||||
<data
|
||||
android:host="gist.github.com"
|
||||
android:scheme="http"/>
|
||||
android:scheme="http" />
|
||||
<data
|
||||
android:host="gist.github.com"
|
||||
android:scheme="https"/>
|
||||
android:scheme="https" />
|
||||
<data
|
||||
android:host="raw.githubusercontent.com"
|
||||
android:scheme="https"/>
|
||||
android:scheme="https" />
|
||||
<data
|
||||
android:host="gist.githubusercontent.com"
|
||||
android:scheme="https"/>
|
||||
<data android:pathPattern=".*"/>
|
||||
android:scheme="https" />
|
||||
<data android:pathPattern=".*" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND"/>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
|
||||
<data android:mimeType="text/plain"/>
|
||||
<data android:mimeType="text/plain" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
@ -305,25 +301,29 @@
|
||||
android:name=".provider.tasks.notification.NotificationSchedulerJobTask"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
|
||||
<action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service android:name=".provider.tasks.notification.ReadNotificationService"/>
|
||||
<service android:name=".provider.tasks.git.GithubActionService"/>
|
||||
<service android:name=".provider.tasks.git.ReactionService"/>
|
||||
<service android:name=".provider.tasks.slack.SlackInvitationService"/>
|
||||
<service android:name=".provider.tasks.version.CheckVersionService"/>
|
||||
<service android:name=".provider.tasks.notification.ReadNotificationService" />
|
||||
<service android:name=".provider.tasks.git.GithubActionService" />
|
||||
<service android:name=".provider.tasks.git.ReactionService" />
|
||||
<service android:name=".provider.tasks.slack.SlackInvitationService" />
|
||||
<service android:name=".provider.tasks.version.CheckVersionService" />
|
||||
<service
|
||||
android:name=".provider.fcm.PushNotificationService"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<meta-data
|
||||
android:name="io.fabric.ApiKey"
|
||||
android:value="6ed82b6e0756853d7d782a3f547f84f9ecba217e"/>
|
||||
android:value="6ed82b6e0756853d7d782a3f547f84f9ecba217e" />
|
||||
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
||||
android:resource="@drawable/ic_notification" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@ -5,10 +5,10 @@ query getPinnedRepos($login: String!) {
|
||||
node {
|
||||
name
|
||||
url
|
||||
issues(states: OPEN) {
|
||||
issues(states: [OPEN]) {
|
||||
totalCount
|
||||
}
|
||||
pullRequests(states: OPEN) {
|
||||
pullRequests(states: [OPEN]) {
|
||||
totalCount
|
||||
}
|
||||
stargazers {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
query repoProjectsOpen($owner: String!, $name: String!, $page: String) {
|
||||
repository(owner: $owner, name: $name) {
|
||||
projects(first: 30, states: OPEN, after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
projects(first: 30, states: [OPEN], after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
totalCount
|
||||
edges {
|
||||
cursor
|
||||
@ -27,7 +27,7 @@ repository(owner: $owner, name: $name) {
|
||||
}
|
||||
query repoProjectsClosed($owner: String!, $name: String!, $page: String) {
|
||||
repository(owner: $owner, name: $name) {
|
||||
projects(first: 30, states: CLOSED, after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
projects(first: 30, states: [CLOSED], after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
totalCount
|
||||
edges {
|
||||
cursor
|
||||
@ -55,7 +55,7 @@ repository(owner: $owner, name: $name) {
|
||||
|
||||
query orgProjectsOpen($owner: String!, $page: String) {
|
||||
organization(login: $owner) {
|
||||
projects(first: 30, states: OPEN, after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
projects(first: 30, states: [OPEN], after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
totalCount
|
||||
edges {
|
||||
cursor
|
||||
@ -82,7 +82,7 @@ organization(login: $owner) {
|
||||
}
|
||||
query orgProjectsClosed($owner: String!, $page: String) {
|
||||
organization(login: $owner) {
|
||||
projects(first: 30, states: CLOSED, after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
projects(first: 30, states: [CLOSED], after: $page, orderBy: {field: CREATED_AT, direction: DESC}) {
|
||||
totalCount
|
||||
edges {
|
||||
cursor
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess;
|
||||
|
||||
import android.app.Application;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.fastaccess.data.dao.model.Models;
|
||||
import com.fastaccess.helper.DeviceNameGetter;
|
||||
|
||||
8
app/src/main/java/com/fastaccess/GlideModule.kt
Normal file
8
app/src/main/java/com/fastaccess/GlideModule.kt
Normal file
@ -0,0 +1,8 @@
|
||||
package com.fastaccess
|
||||
|
||||
import com.bumptech.glide.annotation.GlideModule
|
||||
import com.bumptech.glide.module.AppGlideModule
|
||||
|
||||
|
||||
@GlideModule
|
||||
class GlideModule : AppGlideModule()
|
||||
@ -2,8 +2,8 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.helper.InputHelper;
|
||||
|
||||
|
||||
@ -14,5 +14,5 @@ import lombok.Setter;
|
||||
public class CreateMilestoneModel {
|
||||
private String title;
|
||||
private String description;
|
||||
@SerializedName("due_one") private String dueOn;
|
||||
@SerializedName("due_on") private String dueOn;
|
||||
}
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
package com.fastaccess.data.dao
|
||||
|
||||
import android.os.Parcel
|
||||
import com.fastaccess.helper.KotlinParcelable
|
||||
import com.fastaccess.helper.parcelableCreator
|
||||
import com.fastaccess.helper.readBoolean
|
||||
import com.fastaccess.helper.writeBoolean
|
||||
import com.fastaccess.helper.*
|
||||
|
||||
/**
|
||||
* Created by Hashemsergani on 01/09/2017.
|
||||
*/
|
||||
data class EditRepoFileModel(val login: String,
|
||||
val repoId: String,
|
||||
val path: String?,
|
||||
val ref: String,
|
||||
val sha: String?,
|
||||
val contentUrl: String?,
|
||||
val fileName: String?,
|
||||
val isEdit: Boolean) : KotlinParcelable {
|
||||
data class EditRepoFileModel(
|
||||
val login: String,
|
||||
val repoId: String,
|
||||
val path: String?,
|
||||
val ref: String,
|
||||
val sha: String?,
|
||||
val contentUrl: String?,
|
||||
val fileName: String?,
|
||||
val isEdit: Boolean
|
||||
) : KotlinParcelable {
|
||||
constructor(parcel: Parcel) : this(
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readString(),
|
||||
parcel.readBoolean())
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readString() ?: "",
|
||||
parcel.readBooleanCompat()
|
||||
)
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
|
||||
writeString(login)
|
||||
@ -35,7 +35,7 @@ data class EditRepoFileModel(val login: String,
|
||||
writeString(sha)
|
||||
writeString(contentUrl)
|
||||
writeString(fileName)
|
||||
writeBoolean(isEdit)
|
||||
writeBooleanCompat(isEdit)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
package com.fastaccess.data.dao
|
||||
|
||||
data class FirebaseTrendingConfigModel(
|
||||
var pathUrl: String = "https://github.com/trending/",
|
||||
var description: String = ".Box-row > p",
|
||||
var forks: String = ".f6 > a[href*=/network]",
|
||||
var language: String = ".f6 span[itemprop=programmingLanguage]",
|
||||
var languageFallback: String = ".f6 span[itemprop=programmingLanguage]",
|
||||
var listName: String = ".Box",
|
||||
var listNameSublistTag: String = "article",
|
||||
var stars: String = ".f6 > a[href*=/stargazers]",
|
||||
var title: String = ".Box-row > h1 > a",
|
||||
var todayStars: String = ".f6 > span.float-sm-right",
|
||||
var todayStarsFallback: String = ".f6 > span.float-sm-right"
|
||||
) {
|
||||
|
||||
companion object {
|
||||
fun map(map: HashMap<String, String>?): FirebaseTrendingConfigModel {
|
||||
val trendingModel = FirebaseTrendingConfigModel()
|
||||
map?.let {
|
||||
trendingModel.description = it.getOrElse("description") { trendingModel.description }
|
||||
trendingModel.forks = it.getOrElse("forks") { trendingModel.forks }
|
||||
trendingModel.language = it.getOrElse("language") { trendingModel.language }
|
||||
trendingModel.languageFallback = it.getOrElse("language_fallback") { trendingModel.languageFallback }
|
||||
trendingModel.listName = it.getOrElse("list_name") { trendingModel.listName }
|
||||
trendingModel.listNameSublistTag = it.getOrElse("list_name_sublist_tag") { trendingModel.listNameSublistTag }
|
||||
trendingModel.stars = it.getOrElse("stars") { trendingModel.stars }
|
||||
trendingModel.title = it.getOrElse("title") { trendingModel.title }
|
||||
trendingModel.todayStars = it.getOrElse("today_stars") { trendingModel.title }
|
||||
trendingModel.todayStarsFallback = it.getOrElse("today_stars_fallback") { trendingModel.title }
|
||||
trendingModel.pathUrl = it.getOrElse("path_url") { trendingModel.pathUrl }
|
||||
}
|
||||
return trendingModel
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
package com.fastaccess.data.dao;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.dao;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.data.dao.model.Issue;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.helper.InputHelper;
|
||||
import com.fastaccess.provider.scheme.LinkParserHelper;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.data.dao.model.IssueEvent;
|
||||
|
||||
@ -3,7 +3,7 @@ package com.fastaccess.data.dao;
|
||||
import android.net.Uri;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.helper.InputHelper;
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.data.dao.model.User;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.data.dao.model.RepoFile;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.dao;
|
||||
|
||||
import android.support.annotation.IntDef;
|
||||
import androidx.annotation.IntDef;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.data.dao.model.Comment;
|
||||
import com.fastaccess.data.dao.model.Issue;
|
||||
|
||||
@ -5,23 +5,24 @@ import com.fastaccess.helper.KotlinParcelable
|
||||
import com.fastaccess.helper.parcelableCreator
|
||||
|
||||
data class TrendingModel(
|
||||
val title: String? = null,
|
||||
val description: String? = null,
|
||||
val language: String? = null,
|
||||
val stars: String? = null,
|
||||
val forks: String? = null,
|
||||
val todayStars: String? = null) : KotlinParcelable {
|
||||
val title: String? = null,
|
||||
val description: String? = null,
|
||||
val language: String? = null,
|
||||
val stars: String? = null,
|
||||
val forks: String? = null,
|
||||
val todayStars: String? = null
|
||||
) : KotlinParcelable {
|
||||
companion object {
|
||||
@JvmField val CREATOR = parcelableCreator(::TrendingModel)
|
||||
}
|
||||
|
||||
constructor(source: Parcel) : this(
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString()
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.readString()
|
||||
)
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.ReactionsModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.CommitFileListModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.fastaccess.App;
|
||||
@ -42,7 +42,7 @@ import lombok.NoArgsConstructor;
|
||||
@Nullable String login;
|
||||
|
||||
@NonNull
|
||||
public static Disposable save(@android.support.annotation.Nullable List<Event> events, @android.support.annotation.Nullable String user) {
|
||||
public static Disposable save(@androidx.annotation.Nullable List<Event> events, @androidx.annotation.Nullable String user) {
|
||||
return RxHelper.getSingle(Single.fromPublisher(s -> {
|
||||
try {
|
||||
Login login = Login.getUser();
|
||||
|
||||
@ -2,14 +2,13 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.requery.Column;
|
||||
import io.requery.Entity;
|
||||
@ -33,11 +32,11 @@ import lombok.NoArgsConstructor;
|
||||
@io.requery.Nullable String title;
|
||||
@io.requery.Nullable NotificationType type;
|
||||
|
||||
public static void update(@Nonnull FastHubNotification notification) {
|
||||
public static void update(@NonNull FastHubNotification notification) {
|
||||
App.getInstance().getDataStore().toBlocking().update(notification);
|
||||
}
|
||||
|
||||
public static void save(@Nonnull FastHubNotification notification) {
|
||||
public static void save(@NonNull FastHubNotification notification) {
|
||||
App.getInstance().getDataStore().toBlocking().insert(notification);
|
||||
}
|
||||
|
||||
@ -51,7 +50,7 @@ import lombok.NoArgsConstructor;
|
||||
.firstOrNull();
|
||||
}
|
||||
|
||||
@Nonnull public static Observable<FastHubNotification> getNotifications() {
|
||||
@NonNull public static Observable<FastHubNotification> getNotifications() {
|
||||
return App.getInstance().getDataStore()
|
||||
.select(FastHubNotification.class)
|
||||
.orderBy(FastHubNotification.DATE.desc())
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.LongStream;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.LabelListModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.LabelModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.helper.PrefGetter;
|
||||
|
||||
@ -72,7 +72,7 @@ import lombok.NoArgsConstructor;
|
||||
})).subscribe(o -> {/*do nothing*/}, Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
public static Disposable save(@android.support.annotation.Nullable List<Notification> models) {
|
||||
public static Disposable save(@androidx.annotation.Nullable List<Notification> models) {
|
||||
if (models == null || models.isEmpty()) {
|
||||
return Observable.empty().subscribe();
|
||||
}
|
||||
@ -92,7 +92,7 @@ import lombok.NoArgsConstructor;
|
||||
})).subscribe(o -> {/*do nothing*/}, Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
public static Single<Boolean> saveAsSingle(@android.support.annotation.Nullable List<Notification> models) {
|
||||
public static Single<Boolean> saveAsSingle(@androidx.annotation.Nullable List<Notification> models) {
|
||||
if (models == null || models.isEmpty()) {
|
||||
return Single.just(true);
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.helper.RxHelper;
|
||||
@ -9,8 +10,6 @@ import com.fastaccess.helper.RxHelper;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.requery.BlockingEntityStore;
|
||||
import io.requery.Entity;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.converters.GistConverter;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.converters.IssueConverter;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.converters.PullRequestConverter;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.converters.RepoConverter;
|
||||
|
||||
@ -3,7 +3,7 @@ package com.fastaccess.data.dao.model;
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.R;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.ReleasesAssetsListModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.LicenseModel;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.data.dao.types.FilesType;
|
||||
|
||||
@ -2,8 +2,8 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.helper.RxHelper;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.fastaccess.data.dao.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.helper.RxHelper;
|
||||
|
||||
@ -1,169 +0,0 @@
|
||||
package com.fastaccess.data.dao.timeline;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.data.dao.ReactionsModel;
|
||||
import com.fastaccess.helper.Logger;
|
||||
import com.fastaccess.helper.ParseDateFormat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import github.PullRequestTimelineQuery;
|
||||
import github.type.PullRequestReviewState;
|
||||
|
||||
/**
|
||||
* Created by kosh on 20/08/2017.
|
||||
*/
|
||||
|
||||
public class PullRequestReviewModel {
|
||||
private PullRequestTimelineQuery.AsReviewDismissedEvent reviewDismissedEvent;
|
||||
private PullRequestTimelineQuery.AsReviewRequestedEvent reviewRequestedEvent;
|
||||
private PullRequestTimelineQuery.AsReviewRequestRemovedEvent reviewRequestRemovedEvent;
|
||||
private PullRequestTimelineQuery.Node2 node;
|
||||
private List<ReactionsModel> reaction;
|
||||
private List<PullRequestReviewModel> comments;
|
||||
private String id;
|
||||
private String url;
|
||||
private PullRequestTimelineQuery.Author2 author;
|
||||
private String bodyHTML;
|
||||
private String createdAt;
|
||||
private PullRequestReviewState state;
|
||||
|
||||
@Nullable public static PullRequestReviewModel build(@NonNull PullRequestTimelineQuery.Node node) {
|
||||
PullRequestReviewModel model = new PullRequestReviewModel();
|
||||
if (node.asReviewRequestRemovedEvent() != null) {
|
||||
model.reviewRequestRemovedEvent = node.asReviewRequestRemovedEvent();
|
||||
} else if (node.asReviewDismissedEvent() != null) {
|
||||
model.reviewDismissedEvent = node.asReviewDismissedEvent();
|
||||
} else if (node.asReviewRequestedEvent() != null) {
|
||||
model.reviewRequestedEvent = node.asReviewRequestedEvent();
|
||||
} else {
|
||||
PullRequestTimelineQuery.AsPullRequestReview pullRequestReview = node.asPullRequestReview();
|
||||
if (pullRequestReview != null) {
|
||||
model.state = pullRequestReview.state();
|
||||
model.url = pullRequestReview.url().toString();
|
||||
model.author = pullRequestReview.author();
|
||||
model.bodyHTML = pullRequestReview.bodyHTML().toString();
|
||||
model.createdAt = ParseDateFormat.getTimeAgo(pullRequestReview.createdAt().toString()).toString();
|
||||
model.id = pullRequestReview.id();
|
||||
model.url = pullRequestReview.url().toString();
|
||||
List<PullRequestTimelineQuery.Edge2> edges = pullRequestReview.comments().edges();
|
||||
if (edges != null && !edges.isEmpty()) {
|
||||
List<PullRequestReviewModel> comments = new ArrayList<>();
|
||||
for (PullRequestTimelineQuery.Edge2 edge : edges) {
|
||||
PullRequestTimelineQuery.Node2 node2 = edge.node();
|
||||
if (node2 != null) {
|
||||
PullRequestReviewModel comment = new PullRequestReviewModel();
|
||||
comment.node = node2;
|
||||
comment.reaction = ReactionsModel.getReaction(node2.reactionGroups());
|
||||
comments.add(comment);
|
||||
}
|
||||
}
|
||||
Logger.e(comments.size());
|
||||
model.comments = comments;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
public PullRequestTimelineQuery.AsReviewDismissedEvent getReviewDismissedEvent() {
|
||||
return reviewDismissedEvent;
|
||||
}
|
||||
|
||||
public void setReviewDismissedEvent(PullRequestTimelineQuery.AsReviewDismissedEvent reviewDismissedEvent) {
|
||||
this.reviewDismissedEvent = reviewDismissedEvent;
|
||||
}
|
||||
|
||||
public PullRequestTimelineQuery.AsReviewRequestedEvent getReviewRequestedEvent() {
|
||||
return reviewRequestedEvent;
|
||||
}
|
||||
|
||||
public void setReviewRequestedEvent(PullRequestTimelineQuery.AsReviewRequestedEvent reviewRequestedEvent) {
|
||||
this.reviewRequestedEvent = reviewRequestedEvent;
|
||||
}
|
||||
|
||||
public PullRequestTimelineQuery.AsReviewRequestRemovedEvent getReviewRequestRemovedEvent() {
|
||||
return reviewRequestRemovedEvent;
|
||||
}
|
||||
|
||||
public void setReviewRequestRemovedEvent(PullRequestTimelineQuery.AsReviewRequestRemovedEvent reviewRequestRemovedEvent) {
|
||||
this.reviewRequestRemovedEvent = reviewRequestRemovedEvent;
|
||||
}
|
||||
|
||||
public PullRequestTimelineQuery.Node2 getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
public void setNode(PullRequestTimelineQuery.Node2 node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
public List<ReactionsModel> getReaction() {
|
||||
return reaction;
|
||||
}
|
||||
|
||||
public void setReaction(List<ReactionsModel> reaction) {
|
||||
this.reaction = reaction;
|
||||
}
|
||||
|
||||
public List<PullRequestReviewModel> getComments() {
|
||||
return comments;
|
||||
}
|
||||
|
||||
public void setComments(List<PullRequestReviewModel> comments) {
|
||||
this.comments = comments;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public PullRequestTimelineQuery.Author2 getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(PullRequestTimelineQuery.Author2 author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public String getBodyHTML() {
|
||||
return bodyHTML;
|
||||
}
|
||||
|
||||
public void setBodyHTML(String bodyHTML) {
|
||||
this.bodyHTML = bodyHTML;
|
||||
}
|
||||
|
||||
public String getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(String createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public PullRequestReviewState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(PullRequestReviewState state) {
|
||||
this.state = state;
|
||||
}
|
||||
}
|
||||
@ -1,85 +0,0 @@
|
||||
package com.fastaccess.data.dao.timeline;
|
||||
|
||||
import com.fastaccess.data.dao.ReactionsModel;
|
||||
import com.fastaccess.data.dao.model.PullRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import github.PullRequestTimelineQuery;
|
||||
|
||||
/**
|
||||
* Created by kosh on 02/08/2017.
|
||||
*/
|
||||
|
||||
@Getter @Setter public class PullRequestTimelineModel {
|
||||
|
||||
public static final int HEADER = 1;
|
||||
public static final int EVENT = 2;
|
||||
public static final int COMMENT = 3;
|
||||
public static final int STATUS = 4;
|
||||
public static final int REVIEW = 5;
|
||||
public static final int COMMIT_COMMENTS = 6;
|
||||
public PullRequestTimelineQuery.Node node;
|
||||
public PullRequest pullRequest;
|
||||
public PullRequestTimelineQuery.Status status;
|
||||
public List<ReactionsModel> reactions;
|
||||
public boolean isMergeable;
|
||||
public PullRequestCommitModel commitThread;
|
||||
public PullRequestReviewModel reviewModel;
|
||||
|
||||
public PullRequestTimelineModel(PullRequest pullRequest) {
|
||||
this.pullRequest = pullRequest;
|
||||
}
|
||||
|
||||
public PullRequestTimelineModel(PullRequestTimelineQuery.Node node) {
|
||||
this.node = node;
|
||||
if (this.node.asCommitCommentThread() != null) {
|
||||
|
||||
} else {
|
||||
if (node.asPullRequestReview() != null || node.asReviewDismissedEvent() != null
|
||||
|| node.asReviewRequestedEvent() != null || node.asReviewRequestRemovedEvent() != null) {
|
||||
reviewModel = PullRequestReviewModel.build(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PullRequestTimelineModel(PullRequestTimelineQuery.Status status, boolean isMergeable) {
|
||||
this.status = status;
|
||||
this.isMergeable = isMergeable;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
if (pullRequest != null) return HEADER;
|
||||
if (node != null) {
|
||||
if (node.asAssignedEvent() != null || node.asClosedEvent() != null
|
||||
|| node.asDemilestonedEvent() != null || node.asHeadRefDeletedEvent() != null
|
||||
|| node.asLabeledEvent() != null || node.asLockedEvent() != null
|
||||
|| node.asMergedEvent() != null || node.asMilestonedEvent() != null
|
||||
|| node.asReferencedEvent() != null || node.asRenamedTitleEvent() != null
|
||||
|| node.asReopenedEvent() != null || node.asUnassignedEvent() != null
|
||||
|| node.asUnlabeledEvent() != null || node.asUnlockedEvent() != null
|
||||
|| node.asCommit() != null || node.asHeadRefRestoredEvent() != null) {
|
||||
return EVENT;
|
||||
} else if (node.asIssueComment() != null) {
|
||||
if (reactions == null) {
|
||||
//noinspection ConstantConditions
|
||||
setReactions(ReactionsModel.getReaction2(node.asIssueComment().reactionGroups()));
|
||||
}
|
||||
return COMMENT;
|
||||
} else if (reviewModel != null) {
|
||||
return REVIEW;
|
||||
} else if (commitThread != null) {
|
||||
return COMMIT_COMMENTS;
|
||||
}
|
||||
} else if (status != null) {
|
||||
return STATUS;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public String toString() {
|
||||
return String.valueOf(getType());
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.StringRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.fastaccess.R;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.DrawableRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import com.fastaccess.R;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.R;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.StringRes;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.fastaccess.R;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.IdRes;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.R;
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.R;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess.data.dao.types;
|
||||
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.fastaccess.R;
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
package com.fastaccess.data.dao.wiki
|
||||
|
||||
data class FirebaseWikiConfigModel(
|
||||
var sideBarListTitle: String = "a",
|
||||
var sideBarUl: String = ".js-wiki-sidebar-toggle-display > ul",
|
||||
var sideBarList: String = "li",
|
||||
var wikiWrapper: String = "#wiki-wrapper",
|
||||
var wikiHeader: String = ".gh-header > h1.gh-header-title",
|
||||
var sideBarListLink: String = "href",
|
||||
var wikiBody: String = "#wiki-body",
|
||||
var wikiSubHeader: String = ".gh-header-meta",
|
||||
var wikiContent: String = "#wiki-content"
|
||||
) {
|
||||
companion object {
|
||||
fun map(map: HashMap<String, String>?): FirebaseWikiConfigModel {
|
||||
val model = FirebaseWikiConfigModel()
|
||||
map?.let {
|
||||
model.sideBarListTitle = it.getOrElse("sideBarListTitle") { model.sideBarListTitle }
|
||||
model.sideBarUl = it.getOrElse("sideBarUl") { model.sideBarUl }
|
||||
model.sideBarList = it.getOrElse("sideBarList") { model.sideBarList }
|
||||
model.wikiWrapper = it.getOrElse("wikiWrapper") { model.wikiWrapper }
|
||||
model.wikiHeader = it.getOrElse("wikiHeader") { model.wikiHeader }
|
||||
model.sideBarListLink = it.getOrElse("sideBarListLink") { model.sideBarListLink }
|
||||
model.wikiBody = it.getOrElse("wikiBody") { model.wikiBody }
|
||||
model.wikiSubHeader = it.getOrElse("wikiSubHeader") { model.wikiSubHeader }
|
||||
model.wikiContent = it.getOrElse("wikiContent") { model.wikiContent }
|
||||
}
|
||||
return model
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,16 +7,19 @@ import com.fastaccess.helper.parcelableCreator
|
||||
/**
|
||||
* Created by Kosh on 13 Jun 2017, 8:06 PM
|
||||
*/
|
||||
data class WikiContentModel(val content: String? = null, private val footer: String? = null,
|
||||
val sidebar: ArrayList<WikiSideBarModel>) : KotlinParcelable {
|
||||
data class WikiContentModel(
|
||||
val content: String? = null,
|
||||
private val footer: String? = null,
|
||||
val sidebar: List<WikiSideBarModel>
|
||||
) : KotlinParcelable {
|
||||
companion object {
|
||||
@JvmField val CREATOR = parcelableCreator(::WikiContentModel)
|
||||
}
|
||||
|
||||
constructor(source: Parcel) : this(
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.createTypedArrayList(WikiSideBarModel.CREATOR)
|
||||
source.readString(),
|
||||
source.readString(),
|
||||
source.createTypedArrayList(WikiSideBarModel.CREATOR) ?: arrayListOf()
|
||||
)
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
|
||||
|
||||
@ -7,14 +7,17 @@ import com.fastaccess.helper.parcelableCreator
|
||||
/**
|
||||
* Created by Kosh on 13 Jun 2017, 8:03 PM
|
||||
*/
|
||||
data class WikiSideBarModel(val title: String? = null, val link: String? = null) : KotlinParcelable {
|
||||
data class WikiSideBarModel(
|
||||
val title: String? = null,
|
||||
val link: String? = null
|
||||
) : KotlinParcelable {
|
||||
companion object {
|
||||
@JvmField val CREATOR = parcelableCreator(::WikiSideBarModel)
|
||||
}
|
||||
|
||||
constructor(source: Parcel) : this(
|
||||
source.readString(),
|
||||
source.readString()
|
||||
source.readString(),
|
||||
source.readString()
|
||||
)
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.CommentRequestModel;
|
||||
import com.fastaccess.data.dao.CreateGistModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.data.dao.ImgurReponseModel;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.AssigneesRequestModel;
|
||||
import com.fastaccess.data.dao.CommentRequestModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.AccessTokenModel;
|
||||
import com.fastaccess.data.dao.AuthModel;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.StringDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.StringDef;
|
||||
|
||||
import com.fastaccess.data.dao.NotificationSubscriptionBodyModel;
|
||||
import com.fastaccess.data.dao.Pageable;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.Pageable;
|
||||
import com.fastaccess.data.dao.TeamsModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.AssigneesRequestModel;
|
||||
import com.fastaccess.data.dao.CommitFileModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.Pageable;
|
||||
import com.fastaccess.data.dao.PostReactionModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.BranchesModel;
|
||||
import com.fastaccess.data.dao.CommentRequestModel;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.CommentRequestModel;
|
||||
import com.fastaccess.data.dao.Pageable;
|
||||
|
||||
@ -2,6 +2,7 @@ package com.fastaccess.data.service
|
||||
|
||||
|
||||
import io.reactivex.Observable
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Path
|
||||
import retrofit2.http.Query
|
||||
@ -12,7 +13,7 @@ import retrofit2.http.Query
|
||||
|
||||
interface ScrapService {
|
||||
|
||||
@GET("{lan}") fun getTrending(@Path("lan") lan: String?, @Query("since") since: String?): Observable<String>
|
||||
@GET("{lan}") fun getTrending(@Path("lan") lan: String?, @Query("since") since: String?): Observable<Response<String>>
|
||||
|
||||
@GET("{path}") fun getWiki(@Path(value = "path", encoded = true) path: String?): Observable<String>
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.data.service;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.Pageable;
|
||||
import com.fastaccess.data.dao.model.Event;
|
||||
|
||||
@ -12,15 +12,15 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.ShareCompat;
|
||||
import android.support.v4.util.Pair;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.browser.customtabs.CustomTabsIntent;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.app.ActivityOptionsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.core.app.ShareCompat;
|
||||
import androidx.core.util.Pair;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
@ -5,14 +5,14 @@ import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.Dialog;
|
||||
import android.graphics.Rect;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.UiThread;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v4.view.animation.FastOutLinearInInterpolator;
|
||||
import android.support.v4.view.animation.LinearOutSlowInInterpolator;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.UiThread;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.interpolator.view.animation.FastOutLinearInInterpolator;
|
||||
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
|
||||
import android.view.View;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewPropertyAnimator;
|
||||
|
||||
@ -11,10 +11,10 @@ import android.content.res.Resources;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.StringDef;
|
||||
import androidx.annotation.StringDef;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@ -4,7 +4,7 @@ import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@ -8,8 +8,8 @@ import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.provider.DocumentsContract;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.NotificationSoundModel;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
|
||||
import com.fastaccess.BuildConfig;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 18 Apr 2017, 10:57 PM
|
||||
|
||||
@ -13,6 +13,6 @@ inline fun <reified T> parcelableCreator(crossinline create: (Parcel) -> T) = ob
|
||||
override fun newArray(size: Int) = arrayOfNulls<T>(size)
|
||||
}
|
||||
|
||||
fun Parcel.readBoolean() = readInt() != 0
|
||||
fun Parcel.readBooleanCompat() = readInt() != 0
|
||||
|
||||
fun Parcel.writeBoolean(value: Boolean) = writeInt(if (value) 1 else 0)
|
||||
fun Parcel.writeBooleanCompat(value: Boolean) = writeInt(if (value) 1 else 0)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
@ -4,9 +4,9 @@ import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.media.RingtoneManager;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.IntDef;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.BuildConfig;
|
||||
|
||||
@ -3,8 +3,8 @@ package com.fastaccess.helper;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.App;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.helper;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Single;
|
||||
|
||||
@ -14,10 +14,10 @@ import android.graphics.drawable.RippleDrawable;
|
||||
import android.graphics.drawable.ShapeDrawable;
|
||||
import android.graphics.drawable.StateListDrawable;
|
||||
import android.graphics.drawable.shapes.RoundRectShape;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import android.text.Layout;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
package com.fastaccess.provider.colors;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
@ -39,7 +40,7 @@ public class ColorsProvider {
|
||||
|
||||
private static Map<String, LanguageColorModel> colors = new LinkedHashMap<>();
|
||||
|
||||
public static void load() {
|
||||
@SuppressLint("CheckResult") public static void load() {
|
||||
if (colors.isEmpty()) {
|
||||
RxHelper.safeObservable(Observable
|
||||
.create(observableEmitter -> {
|
||||
@ -68,7 +69,7 @@ public class ColorsProvider {
|
||||
.filter(value -> value != null && !InputHelper.isEmpty(value.getKey()))
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toCollection(ArrayList::new)));
|
||||
lang.add(0, "All Languages");
|
||||
lang.add(0, "All");
|
||||
lang.addAll(1, POPULAR_LANG);
|
||||
return lang;
|
||||
}
|
||||
|
||||
@ -18,18 +18,20 @@ object FabricProvider {
|
||||
|
||||
fun initFabric(context: Context) {
|
||||
val fabric = Fabric.Builder(context)
|
||||
.kits(Crashlytics.Builder()
|
||||
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
|
||||
.build())
|
||||
.debuggable(BuildConfig.DEBUG)
|
||||
.build()
|
||||
.kits(
|
||||
Crashlytics.Builder()
|
||||
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
|
||||
.build()
|
||||
)
|
||||
.debuggable(BuildConfig.DEBUG)
|
||||
.build()
|
||||
Fabric.with(fabric)
|
||||
}
|
||||
|
||||
fun logPurchase(productKey: String, price: Long? = null, priceText: String? = null) {
|
||||
fun logPurchase(productKey: String?, price: Long? = null, priceText: String? = null) {
|
||||
val purchaseEvent = PurchaseEvent()
|
||||
.putItemName(productKey)
|
||||
.putSuccess(true)
|
||||
.putItemName(productKey)
|
||||
.putSuccess(true)
|
||||
|
||||
priceText?.let {
|
||||
purchaseEvent.putItemType(priceText)
|
||||
|
||||
@ -4,7 +4,7 @@ import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.model.FastHubNotification;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.provider.gson;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.R;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.provider.markdown;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.text.Html;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.provider.rest;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.BuildConfig;
|
||||
import com.fastaccess.data.service.ImgurService;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.fastaccess.provider.rest;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.fastaccess.BuildConfig;
|
||||
import com.fastaccess.data.service.LoginRestService;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.provider.rest;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fastaccess.data.dao.types.IssueState;
|
||||
|
||||
|
||||
@ -4,11 +4,14 @@ import android.app.DownloadManager;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.fastaccess.App;
|
||||
import com.fastaccess.BuildConfig;
|
||||
import com.fastaccess.R;
|
||||
@ -91,31 +94,28 @@ public class RestProvider {
|
||||
}
|
||||
|
||||
public static void downloadFile(@NonNull Context context, @NonNull String url) {
|
||||
if (InputHelper.isEmpty(url)) return;
|
||||
boolean isEnterprise = LinkParserHelper.isEnterprise(url);
|
||||
Uri uri = Uri.parse(url);
|
||||
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
DownloadManager.Request request = new DownloadManager.Request(uri);
|
||||
String authToken = isEnterprise ? PrefGetter.getEnterpriseToken() : PrefGetter.getToken();
|
||||
if (!TextUtils.isEmpty(authToken)) {
|
||||
request.addRequestHeader("Authorization", authToken.startsWith("Basic") ? authToken : "token " + authToken);
|
||||
}
|
||||
File direct = new File(Environment.getExternalStorageDirectory() + File.separator + context.getString(R.string.app_name));
|
||||
if (!direct.isDirectory() || !direct.exists()) {
|
||||
boolean isCreated = direct.mkdirs();
|
||||
if (!isCreated) {
|
||||
Toast.makeText(App.getInstance(), "Unable to create directory to download file", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
try {
|
||||
if (InputHelper.isEmpty(url)) return;
|
||||
boolean isEnterprise = LinkParserHelper.isEnterprise(url);
|
||||
Uri uri = Uri.parse(url);
|
||||
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
DownloadManager.Request request = new DownloadManager.Request(uri);
|
||||
String authToken = isEnterprise ? PrefGetter.getEnterpriseToken() : PrefGetter.getToken();
|
||||
if (!TextUtils.isEmpty(authToken)) {
|
||||
request.addRequestHeader("Authorization", authToken.startsWith("Basic") ? authToken : "token " + authToken);
|
||||
}
|
||||
}
|
||||
String fileName = new File(url).getName();
|
||||
request.setDestinationInExternalPublicDir(context.getString(R.string.app_name), fileName);
|
||||
request.setTitle(fileName);
|
||||
request.setDescription(context.getString(R.string.downloading_file));
|
||||
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
if (downloadManager != null) {
|
||||
downloadManager.enqueue(request);
|
||||
String fileName = new File(url).getName();
|
||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
|
||||
request.setTitle(fileName);
|
||||
request.setDescription(context.getString(R.string.downloading_file));
|
||||
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
if (downloadManager != null) {
|
||||
downloadManager.enqueue(request);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Crashlytics.logException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.fastaccess.provider.rest.converters;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@ -39,7 +39,7 @@ public class GithubResponseConverter extends Converter.Factory {
|
||||
return GsonConverterFactory.create(gson).requestBodyConverter(type, parameterAnnotations, methodAnnotations, retrofit);
|
||||
}
|
||||
|
||||
private static class StringResponseConverter implements Converter<ResponseBody, String> {
|
||||
public static class StringResponseConverter implements Converter<ResponseBody, String> {
|
||||
@Override public String convert(@NonNull ResponseBody value) throws IOException {
|
||||
return value.string();
|
||||
}
|
||||
|
||||
@ -24,14 +24,14 @@ class AuthenticationInterceptor : Interceptor {
|
||||
@Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response {
|
||||
val original = chain.request()
|
||||
val builder = original.newBuilder()
|
||||
val isEnterprise = LinkParserHelper.isEnterprise(original.url().host())
|
||||
val isEnterprise = LinkParserHelper.isEnterprise(original.url.host)
|
||||
val authToken = if (token.isNullOrBlank()) if (isEnterprise) PrefGetter.getEnterpriseToken() else PrefGetter.getToken() else token
|
||||
val otpCode = if (otp.isNullOrBlank()) if (isEnterprise) PrefGetter.getEnterpriseOtpCode() else PrefGetter.getOtpCode() else otp
|
||||
if (!authToken.isNullOrBlank()) {
|
||||
builder.header("Authorization", if (authToken!!.startsWith("Basic")) authToken else "token " + authToken)
|
||||
builder.header("Authorization", if (authToken.startsWith("Basic")) authToken else "token $authToken")
|
||||
}
|
||||
if (!otpCode.isNullOrBlank()) {
|
||||
builder.addHeader("X-GitHub-OTP", otpCode!!.trim())
|
||||
builder.addHeader("X-GitHub-OTP", otpCode.trim())
|
||||
}
|
||||
if (!isScrapping) builder.addHeader("User-Agent", "FastHub")
|
||||
val request = builder.build()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user