diff --git a/app/build.gradle b/app/build.gradle
index 656dcd1a..29c53768 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,10 +8,10 @@ apply plugin: 'io.fabric'
buildProperties {
notThere {
- file rootProject.file('debug_gradle.properties')
+ using rootProject.file('debug_gradle.properties')
}
secrets {
- file rootProject.file('release_gradle.properties')
+ using rootProject.file('release_gradle.properties')
}
}
@@ -29,8 +29,8 @@ android {
applicationId "com.fastaccess.github"
minSdkVersion 21
targetSdkVersion 29
- versionCode 469
- versionName "4.6.9"
+ versionCode 470
+ versionName "4.7.0"
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
@@ -38,7 +38,6 @@ android {
buildConfigField "String", "REST_URL", '"https://api.github.com/"'
buildConfigField "String", "IMGUR_URL", '"https://api.imgur.com/3/"'
multiDexEnabled true
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
@@ -54,14 +53,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
- if (!rootProject.file('gradle.properties').exists()) {
- signingConfig signingConfigs.signing
- }
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
ext.alwaysUpdateBuildId = false
}
-
}
sourceSets {
@@ -99,14 +94,6 @@ android {
jumboMode true
javaMaxHeapSize "4g"
}
-
- testOptions {
- unitTests.returnDefaultValues = true
- }
-}
-
-kapt {
- generateStubs = true
}
repositories {
@@ -139,7 +126,7 @@ dependencies {
implementation 'it.sephiroth.android.library.bottomnavigation:bottom-navigation:2.0.2'
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.squareup.okhttp3:logging-interceptor:4.2.2'
implementation 'com.annimon:stream:1.1.9'
implementation 'com.github.GrenderG:Toasty:1.1.3'
implementation 'com.github.k0shk0sh:RetainedDateTimePickers:1.0.2'
@@ -156,7 +143,8 @@ 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:17.2.1"
+ implementation "com.google.firebase:firebase-analytics:17.2.1"
+ implementation "com.google.firebase:firebase-inappmessaging:19.0.2"
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"
@@ -170,10 +158,11 @@ dependencies {
implementation "petrov.kristiyan:colorpicker-library:1.1.4"
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 'com.jaredrummler:android-device-names:1.1.9'
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
- implementation 'com.airbnb.android:lottie:3.0.7'
+ implementation 'com.airbnb.android:lottie:3.3.1'
implementation 'com.firebase:firebase-jobdispatcher:0.8.2'
+ implementation 'com.google.guava:guava:27.0.1-android' /*to be removed*/
debugImplementation 'com.github.whataa:pandora:2.0.6'
releaseImplementation 'com.github.whataa:pandora-no-op:2.0.3'
@@ -185,7 +174,6 @@ dependencies {
kapt 'com.github.matthiasrobbers:shortbread-compiler:1.0.1'
kapt "io.requery:requery-processor:${requery}"
kapt "com.github.bumptech.glide:compiler:$glideVersion"
-
}
apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
diff --git a/app/src/debug/google-services.json b/app/src/debug/google-services.json
index 7f42a1cf..0ad69152 100644
--- a/app/src/debug/google-services.json
+++ b/app/src/debug/google-services.json
@@ -1,61 +1,37 @@
{
"project_info": {
- "project_id": "this-is-a-sample",
- "project_number": "999999999999",
- "name": "FastHub Sample",
- "firebase_url": "https://this-is-a-sample-do-not-use.firebaseio.com",
- "storage_bucket": "this-is-a-sample-do-not-use.storage.firebase.com"
+ "project_number": "535903042804",
+ "firebase_url": "https://fasthub-dev-a1309.firebaseio.com",
+ "project_id": "fasthub-dev-a1309",
+ "storage_bucket": "fasthub-dev-a1309.appspot.com"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:999999999999:android:0000000000000000",
+ "mobilesdk_app_id": "1:535903042804:android:516309017e0298c938b2a1",
"android_client_info": {
"package_name": "com.fastaccess.github.debug"
}
},
"oauth_client": [
{
- "client_id": "this-is-a-sample-do-not-use.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.fastaccess.github.debug",
- "certificate_hash": "0000000000000000000000000000000000000000"
- }
- },
- {
- "client_id": "this-is-a-sample-do-not-use.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.fastaccess.github.debug",
- "certificate_hash": "0000000000000000000000000000000000000000"
- }
- },
- {
- "client_id": "this-is-a-sample-do-not-use.apps.googleusercontent.com",
+ "client_id": "535903042804-14481m7poceb7ojv5roddqm28pg4ch5n.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
- "current_key": "000000000000000000000000000000000000000"
+ "current_key": "AIzaSyBbRQtQN1UxFRgeSSfjZwQ5TRulc2lZUzI"
}
],
"services": {
- "analytics_service": {
- "status": 1
- },
"appinvite_service": {
- "status": 2,
"other_platform_oauth_client": [
{
- "client_id": "this-is-a-sample-do-not-use.apps.googleusercontent.com",
+ "client_id": "535903042804-14481m7poceb7ojv5roddqm28pg4ch5n.apps.googleusercontent.com",
"client_type": 3
}
]
- },
- "ads_service": {
- "status": 2
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b0f438f5..796c4f31 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -317,10 +317,6 @@
-
-
diff --git a/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java b/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java
index 16edfeca..ffcddd07 100644
--- a/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java
+++ b/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java
@@ -2,11 +2,14 @@ package com.fastaccess.data.dao;
import android.os.Parcel;
import android.os.Parcelable;
+
import androidx.annotation.Nullable;
import com.fastaccess.data.dao.model.User;
import com.google.gson.annotations.SerializedName;
+import org.jetbrains.annotations.NotNull;
+
import java.util.ArrayList;
import java.util.List;
@@ -24,12 +27,14 @@ import github.PullRequestTimelineQuery;
public long id;
public String url;
public int total_count;
- @SerializedName("+1") public int plusOne;
- @SerializedName("-1") public int minusOne;
+ @SerializedName(value = "+1", alternate = "thumbs_up") public int plusOne;
+ @SerializedName(value = "-1", alternate = "thumbs_down") public int minusOne;
public int laugh;
public int hooray;
public int confused;
public int heart;
+ public int rocket;
+ public int eyes;
public String content;
public User user;
public boolean viewerHasReacted;
@@ -37,7 +42,7 @@ import github.PullRequestTimelineQuery;
public ReactionsModel() {}
- @Override public String toString() {
+ @NotNull @Override public String toString() {
return "ReactionsModel{" +
"id=" + id +
", url='" + url + '\'' +
@@ -48,6 +53,8 @@ import github.PullRequestTimelineQuery;
", hooray=" + hooray +
", confused=" + confused +
", heart=" + heart +
+ ", rocket=" + rocket +
+ ", eyes=" + eyes +
'}';
}
@@ -63,6 +70,8 @@ import github.PullRequestTimelineQuery;
dest.writeInt(this.hooray);
dest.writeInt(this.confused);
dest.writeInt(this.heart);
+ dest.writeInt(this.rocket);
+ dest.writeInt(this.eyes);
dest.writeString(this.content);
dest.writeParcelable(this.user, flags);
dest.writeByte(this.isCallingApi ? (byte) 1 : (byte) 0);
@@ -78,6 +87,8 @@ import github.PullRequestTimelineQuery;
this.hooray = in.readInt();
this.confused = in.readInt();
this.heart = in.readInt();
+ this.rocket = in.readInt();
+ this.eyes = in.readInt();
this.content = in.readString();
this.user = in.readParcelable(User.class.getClassLoader());
this.isCallingApi = in.readByte() != 0;
@@ -88,46 +99,4 @@ import github.PullRequestTimelineQuery;
@Override public ReactionsModel[] newArray(int size) {return new ReactionsModel[size];}
};
-
- @NonNull public static List getReactionGroup(@Nullable List reactions) {
- List models = new ArrayList<>();
- if (reactions != null && !reactions.isEmpty()) {
- for (PullRequestTimelineQuery.ReactionGroup reaction : reactions) {
- ReactionsModel model = new ReactionsModel();
- model.setContent(reaction.content().name());
- model.setViewerHasReacted(reaction.viewerHasReacted());
- model.setTotal_count(reaction.users().totalCount());
- models.add(model);
- }
- }
- return models;
- }
-
- @NonNull public static List getReaction(@Nullable List reactions) {
- List models = new ArrayList<>();
- if (reactions != null && !reactions.isEmpty()) {
- for (PullRequestTimelineQuery.ReactionGroup1 reaction : reactions) {
- ReactionsModel model = new ReactionsModel();
- model.setContent(reaction.content().name());
- model.setViewerHasReacted(reaction.viewerHasReacted());
- model.setTotal_count(reaction.users().totalCount());
- models.add(model);
- }
- }
- return models;
- }
-
- @NonNull public static List getReaction2(@Nullable List reactions) {
- List models = new ArrayList<>();
- if (reactions != null && !reactions.isEmpty()) {
- for (PullRequestTimelineQuery.ReactionGroup2 reaction : reactions) {
- ReactionsModel model = new ReactionsModel();
- model.setContent(reaction.content().name());
- model.setViewerHasReacted(reaction.viewerHasReacted());
- model.setTotal_count(reaction.users().totalCount());
- models.add(model);
- }
- }
- return models;
- }
}
diff --git a/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java b/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java
index 7b075c26..2f21fd4b 100644
--- a/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java
+++ b/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java
@@ -14,10 +14,12 @@ public enum ReactionTypes {
HEART("heart", R.id.heart, R.id.heartReaction),
HOORAY("hooray", R.id.hurray, R.id.hurrayReaction),
- PLUS_ONE("+1", R.id.thumbsUp, R.id.thumbsUpReaction),
- MINUS_ONE("-1", R.id.thumbsDown, R.id.thumbsDownReaction),
+ PLUS_ONE("thumbs_up", R.id.thumbsUp, R.id.thumbsUpReaction),
+ MINUS_ONE("thumbs_down", R.id.thumbsDown, R.id.thumbsDownReaction),
CONFUSED("confused", R.id.sad, R.id.sadReaction),
- LAUGH("laugh", R.id.laugh, R.id.laughReaction);
+ LAUGH("laugh", R.id.laugh, R.id.laughReaction),
+ ROCKET("rocket", R.id.rocket, R.id.rocketReaction),
+ EYES("eyes", R.id.eyes, R.id.eyeReaction);
private String content;
private int vId;
diff --git a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
index a3e6bd66..94ae9800 100644
--- a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
+++ b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
@@ -120,7 +120,6 @@ public class RestProvider {
public static int getErrorCode(Throwable throwable) {
if (throwable instanceof HttpException) {
return ((HttpException) throwable).code();
-
}
return -1;
}
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java
index 1dde1391..727f3f49 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java
@@ -1,8 +1,10 @@
package com.fastaccess.provider.timeline;
import android.content.Context;
+
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
+
import android.view.View;
import android.widget.TextView;
@@ -16,6 +18,8 @@ import com.fastaccess.data.dao.types.ReactionTypes;
import com.fastaccess.provider.tasks.git.ReactionService;
import com.fastaccess.ui.widgets.SpannableBuilder;
+import org.w3c.dom.Text;
+
import java.util.ArrayList;
import java.util.List;
@@ -31,41 +35,14 @@ public class CommentsHelper {
private static final int THUMBS_DOWN = 0x1f44e;
private static final int HOORAY = 0x1f389;
private static final int HEART = 0x2764;
+ private static final int ROCKET = 0x1f680;
+ private static final int EYES = 0x1f440;
public static boolean isOwner(@NonNull String currentLogin, @NonNull String repoOwner, @NonNull String commentUser) {
return currentLogin.equalsIgnoreCase(repoOwner) || currentLogin.equalsIgnoreCase(commentUser);
}
- public static void handleReactions(@NonNull Context context, @NonNull String login, @NonNull String repoId,
- @IdRes int id, long commentId, boolean commit, boolean isDelete,
- boolean isEnterprise) {
- ReactionTypes type = null;
- switch (id) {
- case R.id.heart:
- type = ReactionTypes.HEART;
- break;
- case R.id.sad:
- type = ReactionTypes.CONFUSED;
- break;
- case R.id.thumbsDown:
- type = ReactionTypes.MINUS_ONE;
- break;
- case R.id.thumbsUp:
- type = ReactionTypes.PLUS_ONE;
- break;
- case R.id.laugh:
- type = ReactionTypes.LAUGH;
- break;
- case R.id.hurray:
- type = ReactionTypes.HOORAY;
- break;
- }
- if (type != null) {
- ReactionService.start(context, login, repoId, commentId, type, commit, isDelete, isEnterprise);
- }
- }
-
private static String getEmojiByUnicode(int unicode) {
return new String(Character.toChars(unicode));
}
@@ -76,14 +53,16 @@ public class CommentsHelper {
return getHeart();
case HOORAY:
return getHooray();
- case PLUS_ONE:
- return getThumbsUp();
case MINUS_ONE:
return getThumbsDown();
case CONFUSED:
return getSad();
case LAUGH:
return getLaugh();
+ case ROCKET:
+ return getRocket();
+ case EYES:
+ return getEyes();
default:
return getThumbsUp();
}
@@ -113,6 +92,14 @@ public class CommentsHelper {
return getEmojiByUnicode(HEART);
}
+ public static String getRocket() {
+ return getEmojiByUnicode(ROCKET);
+ }
+
+ public static String getEyes() {
+ return getEmojiByUnicode(EYES);
+ }
+
@NonNull public static ArrayList getUsers(@NonNull List comments) {
return Stream.of(comments)
.filter(comment -> comment.getUser() != null)
@@ -129,13 +116,17 @@ public class CommentsHelper {
.collect(Collectors.toCollection(ArrayList::new));
}
- public static void appendEmojies(@NonNull ReactionsModel reaction, @NonNull TextView thumbsUp,
- @NonNull TextView thumbsUpReaction, @NonNull TextView thumbsDown,
- @NonNull TextView thumbsDownReaction, @NonNull TextView hurray,
- @NonNull TextView hurrayReaction, @NonNull TextView sad,
- @NonNull TextView sadReaction, @NonNull TextView laugh,
- @NonNull TextView laughReaction, @NonNull TextView heart,
- @NonNull TextView heartReaction, @NonNull View reactionsList) {
+ public static void appendEmojies(
+ @NonNull ReactionsModel reaction, @NonNull TextView thumbsUp,
+ @NonNull TextView thumbsUpReaction, @NonNull TextView thumbsDown,
+ @NonNull TextView thumbsDownReaction, @NonNull TextView hurray,
+ @NonNull TextView hurrayReaction, @NonNull TextView sad,
+ @NonNull TextView sadReaction, @NonNull TextView laugh,
+ @NonNull TextView laughReaction, @NonNull TextView heart,
+ @NonNull TextView heartReaction, @NonNull TextView rocket,
+ @NonNull TextView rocketReaction, @NonNull TextView eye,
+ @NonNull TextView eyeReaction, @NonNull View reactionsList
+ ) {
SpannableBuilder spannableBuilder = SpannableBuilder.builder()
.append(CommentsHelper.getThumbsUp()).append(" ")
.append(String.valueOf(reaction.getPlusOne()))
@@ -173,10 +164,27 @@ public class CommentsHelper {
laughReaction.setVisibility(reaction.getLaugh() > 0 ? View.VISIBLE : View.GONE);
spannableBuilder = SpannableBuilder.builder()
.append(CommentsHelper.getHeart()).append(" ")
- .append(String.valueOf(reaction.getHeart()));
+ .append(String.valueOf(reaction.getHeart()))
+ .append(" ");
heart.setText(spannableBuilder);
heartReaction.setText(spannableBuilder);
heartReaction.setVisibility(reaction.getHeart() > 0 ? View.VISIBLE : View.GONE);
+
+ spannableBuilder = SpannableBuilder.builder()
+ .append(CommentsHelper.getRocket()).append(" ")
+ .append(String.valueOf(reaction.getRocket()))
+ .append(" ");
+ rocket.setText(spannableBuilder);
+ rocketReaction.setText(spannableBuilder);
+ rocketReaction.setVisibility(reaction.getRocket() > 0 ? View.VISIBLE : View.GONE);
+
+ spannableBuilder = SpannableBuilder.builder()
+ .append(CommentsHelper.getEyes()).append(" ")
+ .append(String.valueOf(reaction.getEyes()));
+ eye.setText(spannableBuilder);
+ eyeReaction.setText(spannableBuilder);
+ eyeReaction.setVisibility(reaction.getEyes() > 0 ? View.VISIBLE : View.GONE);
+
if (reaction.getPlusOne() > 0 || reaction.getMinusOne() > 0
|| reaction.getLaugh() > 0 || reaction.getHooray() > 0
|| reaction.getConfused() > 0 || reaction.getHeart() > 0) {
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java
index fe6517db..d0b3abe5 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java
@@ -41,7 +41,6 @@ import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
builder.append("\n");
DrawableGetter imageGetter = new DrawableGetter(textView, width);
builder.setSpan(new ImageSpan(imageGetter.getDrawable(src)), start, builder.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
- builder.setSpan(new CenterSpan(), start, builder.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append("\n");
} else {
builder.append(SpannableBuilder.builder().clickable("Image", v -> SchemeParser.launchUri(v.getContext(), src)));
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/PreTagHandler.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/PreTagHandler.java
index 0e7be88b..9010e046 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/PreTagHandler.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/PreTagHandler.java
@@ -71,7 +71,7 @@ import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
this.appendNewLine(builder);
this.appendNewLine(builder);
} else {
- StringBuffer text = node.getText();
+ CharSequence text = node.getText();
builder.append(" ");
builder.append(replace(text.toString()));
builder.append(" ");
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java
index 93b1989b..7dc25666 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java
@@ -40,8 +40,8 @@ public class DrawableGetter implements Html.ImageGetter, Drawable.Callback {
final RequestBuilder load = Glide.with(context)
.load(url)
.placeholder(ContextCompat.getDrawable(context, R.drawable.ic_image))
- .dontAnimate()
- .override(width, width / 2);
+ .dontAnimate();
+
final GlideDrawableTarget target = new GlideDrawableTarget(urlDrawable, container, width);
load.into(target);
cachedTargets.add(target);
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/GlideDrawableTarget.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/GlideDrawableTarget.java
index 30f6b687..1f7d3125 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/GlideDrawableTarget.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/GlideDrawableTarget.java
@@ -37,9 +37,8 @@ class GlideDrawableTarget extends SimpleTarget {
width = (float) (resource.getIntrinsicWidth() / downScale / 1.3);
height = (float) (resource.getIntrinsicHeight() / downScale / 1.3);
} else {
- float multiplier = (float) this.width / resource.getIntrinsicWidth();
- width = (float) resource.getIntrinsicWidth() * multiplier;
- height = (float) resource.getIntrinsicHeight() * multiplier;
+ width = (float) resource.getIntrinsicWidth();
+ height = (float) resource.getIntrinsicHeight();
}
Rect rect = new Rect(0, 0, Math.round(width), Math.round(height));
resource.setBounds(rect);
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/UrlDrawable.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/UrlDrawable.java
index 938dc033..a76f28c3 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/UrlDrawable.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/UrlDrawable.java
@@ -1,11 +1,14 @@
package com.fastaccess.provider.timeline.handler.drawable;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
+
import androidx.annotation.NonNull;
import com.bumptech.glide.load.resource.gif.GifDrawable;
+import com.crashlytics.android.Crashlytics;
class UrlDrawable extends BitmapDrawable implements Drawable.Callback {
private Drawable drawable;
@@ -14,7 +17,12 @@ class UrlDrawable extends BitmapDrawable implements Drawable.Callback {
@Override public void draw(Canvas canvas) {
if (drawable != null) {
- drawable.draw(canvas);
+ try {
+ drawable.draw(canvas);
+ } catch (Exception e) {
+ Crashlytics.logException(e);
+ e.printStackTrace();
+ }
if (drawable instanceof GifDrawable) {
if (!((GifDrawable) drawable).isRunning()) {
((GifDrawable) drawable).start();
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java
index 18251cc1..354592a2 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java
@@ -69,6 +69,10 @@ public class IssueDetailsViewHolder extends BaseViewHolder {
@BindView(R.id.hurrayReaction) FontTextView hurrayReaction;
@BindView(R.id.sadReaction) FontTextView sadReaction;
@BindView(R.id.heartReaction) FontTextView heartReaction;
+ @BindView(R.id.rocketReaction) FontTextView rocketReaction;
+ @BindView(R.id.eyeReaction) FontTextView eyeReaction;
+ @BindView(R.id.rocket) FontTextView rocket;
+ @BindView(R.id.eyes) FontTextView eyes;
private OnToggleView onToggleView;
private ReactionsCallback reactionsCallback;
private ViewGroup viewGroup;
@@ -113,6 +117,14 @@ public class IssueDetailsViewHolder extends BaseViewHolder {
thumbsUpReaction.setOnLongClickListener(this);
hurrayReaction.setOnLongClickListener(this);
heartReaction.setOnLongClickListener(this);
+ rocketReaction.setOnLongClickListener(this);
+ rocketReaction.setOnClickListener(this);
+ rocket.setOnLongClickListener(this);
+ rocket.setOnClickListener(this);
+ eyeReaction.setOnLongClickListener(this);
+ eyeReaction.setOnClickListener(this);
+ eyes.setOnLongClickListener(this);
+ eyes.setOnClickListener(this);
}
public static IssueDetailsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter,
@@ -187,6 +199,14 @@ public class IssueDetailsViewHolder extends BaseViewHolder {
case R.id.hurrayReaction:
reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1);
break;
+ case R.id.rocket:
+ case R.id.rocketReaction:
+ reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1);
+ break;
+ case R.id.eyes:
+ case R.id.eyeReaction:
+ reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1);
+ break;
}
if (pullRequest != null) {
pullRequest.setReactions(reactionsModel);
@@ -254,7 +274,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder {
private void appendEmojies(ReactionsModel reaction) {
CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hooray, hurrayReaction, sad,
- sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList);
+ sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList);
}
private void onToggle(boolean expanded, boolean animate) {
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java
index a4859ed5..d3986904 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java
@@ -56,6 +56,10 @@ public class ReviewCommentsViewHolder extends BaseViewHolder
@BindView(R.id.hurrayReaction) FontTextView hurrayReaction;
@BindView(R.id.sadReaction) FontTextView sadReaction;
@BindView(R.id.heartReaction) FontTextView heartReaction;
+ @BindView(R.id.rocketReaction) FontTextView rocketReaction;
+ @BindView(R.id.eyeReaction) FontTextView eyeReaction;
+ @BindView(R.id.rocket) FontTextView rocket;
+ @BindView(R.id.eyes) FontTextView eyes;
private OnToggleView onToggleView;
private ReactionsCallback reactionsCallback;
private ViewGroup viewGroup;
@@ -122,6 +126,14 @@ public class ReviewCommentsViewHolder extends BaseViewHolder
thumbsUpReaction.setOnLongClickListener(this);
hurrayReaction.setOnLongClickListener(this);
heartReaction.setOnLongClickListener(this);
+ rocketReaction.setOnLongClickListener(this);
+ rocketReaction.setOnClickListener(this);
+ rocket.setOnLongClickListener(this);
+ rocket.setOnClickListener(this);
+ eyeReaction.setOnLongClickListener(this);
+ eyeReaction.setOnClickListener(this);
+ eyes.setOnLongClickListener(this);
+ eyes.setOnClickListener(this);
}
public static ReviewCommentsViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter,
@@ -201,6 +213,14 @@ public class ReviewCommentsViewHolder extends BaseViewHolder
case R.id.hurrayReaction:
reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1);
break;
+ case R.id.rocket:
+ case R.id.rocketReaction:
+ reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1);
+ break;
+ case R.id.eyes:
+ case R.id.eyeReaction:
+ reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1);
+ break;
}
comment.setReactions(reactionsModel);
appendEmojies(reactionsModel);
@@ -210,7 +230,7 @@ public class ReviewCommentsViewHolder extends BaseViewHolder
private void appendEmojies(ReactionsModel reaction) {
CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hurray, hurrayReaction, sad,
- sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList);
+ sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList);
}
private long getId() {
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
index 5ee5a0a4..75616ad5 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
@@ -64,6 +64,10 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
@BindView(R.id.hurrayReaction) FontTextView hurrayReaction;
@BindView(R.id.sadReaction) FontTextView sadReaction;
@BindView(R.id.heartReaction) FontTextView heartReaction;
+ @BindView(R.id.rocketReaction) FontTextView rocketReaction;
+ @BindView(R.id.eyeReaction) FontTextView eyeReaction;
+ @BindView(R.id.rocket) FontTextView rocket;
+ @BindView(R.id.eyes) FontTextView eyes;
private OnToggleView onToggleView;
private boolean showEmojies;
private ReactionsCallback reactionsCallback;
@@ -133,6 +137,14 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
thumbsUpReaction.setOnLongClickListener(this);
hurrayReaction.setOnLongClickListener(this);
heartReaction.setOnLongClickListener(this);
+ rocketReaction.setOnLongClickListener(this);
+ rocketReaction.setOnClickListener(this);
+ rocket.setOnLongClickListener(this);
+ rocket.setOnClickListener(this);
+ eyeReaction.setOnLongClickListener(this);
+ eyeReaction.setOnClickListener(this);
+ eyes.setOnLongClickListener(this);
+ eyes.setOnClickListener(this);
}
public static TimelineCommentsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable IssuesTimelineAdapter adapter,
@@ -237,6 +249,14 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
case R.id.hurrayReaction:
reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1);
break;
+ case R.id.rocket:
+ case R.id.rocketReaction:
+ reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1);
+ break;
+ case R.id.eyes:
+ case R.id.eyeReaction:
+ reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1);
+ break;
}
comment.setReactions(reactionsModel);
appendEmojies(reactionsModel);
@@ -247,7 +267,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
private void appendEmojies(ReactionsModel reaction) {
CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hurray, hurrayReaction, sad,
- sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList);
+ sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList);
}
private void onToggle(boolean expanded, boolean animate) {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/MainActivity.java b/app/src/main/java/com/fastaccess/ui/modules/main/MainActivity.java
index 9735bbbc..544e97e9 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/main/MainActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/main/MainActivity.java
@@ -3,11 +3,18 @@ package com.fastaccess.ui.modules.main;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+
+import com.fastaccess.BuildConfig;
+import com.fastaccess.helper.Logger;
+import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
import androidx.fragment.app.FragmentManager;
import androidx.core.view.GravityCompat;
+
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
@@ -29,6 +36,8 @@ import com.fastaccess.ui.modules.notification.NotificationActivity;
import com.fastaccess.ui.modules.search.SearchActivity;
import com.fastaccess.ui.modules.settings.SlackBottomSheetDialog;
import com.fastaccess.ui.modules.user.UserPagerActivity;
+import com.google.firebase.iid.FirebaseInstanceId;
+import com.google.firebase.iid.InstanceIdResult;
import butterknife.BindView;
import butterknife.OnClick;
@@ -72,6 +81,13 @@ public class MainActivity extends BaseActivity impl
new SlackBottomSheetDialog().show(getSupportFragmentManager(), SlackBottomSheetDialog.TAG);
}
}
+
+ if (BuildConfig.DEBUG) {
+ FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(o -> {
+ Logger.e(o.getId(), o.getToken());
+ });
+ }
+
getPresenter().setEnterprise(PrefGetter.isEnterprise());
selectHome(false);
hideShowShadow(navType == MainMvp.FEEDS);
diff --git a/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java b/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java
index 8fc1143c..bac506f0 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java
@@ -15,8 +15,6 @@ import com.fastaccess.helper.InputHelper;
import com.fastaccess.provider.scheme.SchemeParser;
import com.fastaccess.ui.modules.login.chooser.LoginChooserActivity;
-import org.apache.tools.ant.ExitException;
-
/**
* Created by Kosh on 09 Dec 2016, 12:31 PM
*/
@@ -51,7 +49,7 @@ public class LinksParserActivity extends Activity {
Uri uri = Uri.parse(sharedText);
onUriReceived(uri);
}
- } catch (ExitException ignored) {}
+ } catch (Exception ignored) {}
} else if (intent.getAction().equals(Intent.ACTION_VIEW)) {
if (intent.getData() != null) {
onUriReceived(intent.getData());
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesFragment.java
index d3c072aa..3d373f27 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesFragment.java
@@ -115,6 +115,7 @@ public class RepoFilesFragment extends BaseFragment {
switch (item1.getItemId()) {
case R.id.share:
@@ -147,6 +148,9 @@ public class RepoFilesFragment extends BaseFragment(), WikiMvp.Presenter {
}
override fun onSidebarClicked(sidebar: WikiSideBarModel) {
- if (BuildConfig.DEBUG) {
- firebaseWikiConfigModel = FirebaseWikiConfigModel()
- callApi(sidebar)
+ if (firebaseWikiConfigModel == null) {
+ manageDisposable(
+ RxHelper.getSingle(RxFirebaseDatabase.data(FirebaseDatabase.getInstance().reference.child("github_wiki")))
+ .doOnSubscribe { sendToView { it.showProgress(0) } }
+ .map {
+ firebaseWikiConfigModel = FirebaseWikiConfigModel.map(it.value as? HashMap)
+ return@map firebaseWikiConfigModel
+ }
+ .subscribe(
+ { callApi(sidebar) },
+ { callApi(sidebar) }
+ )
+ )
} else {
- if (firebaseWikiConfigModel == null) {
- manageDisposable(
- RxHelper.getSingle(RxFirebaseDatabase.data(FirebaseDatabase.getInstance().reference.child("github_wiki")))
- .doOnSubscribe { sendToView { it.showProgress(0) } }
- .map {
- firebaseWikiConfigModel = FirebaseWikiConfigModel.map(it.value as? HashMap)
- return@map firebaseWikiConfigModel
- }
- .subscribe(
- { callApi(sidebar) },
- { callApi(sidebar) }
- )
- )
- } else {
- callApi(sidebar)
- }
+ callApi(sidebar)
}
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/trending/fragment/TrendingFragmentPresenter.kt b/app/src/main/java/com/fastaccess/ui/modules/trending/fragment/TrendingFragmentPresenter.kt
index 29780f94..1f6f5954 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/trending/fragment/TrendingFragmentPresenter.kt
+++ b/app/src/main/java/com/fastaccess/ui/modules/trending/fragment/TrendingFragmentPresenter.kt
@@ -42,25 +42,21 @@ class TrendingFragmentPresenter : BasePresenter(), Tre
disposel?.let { if (!it.isDisposed) it.dispose() }
val config = firebaseTrendingConfigModel
- if (com.fastaccess.BuildConfig.DEBUG) {
- callApi(lang, since)
- } else {
- if (config == null) {
- manageDisposable(RxHelper.getSingle(RxFirebaseDatabase.data(FirebaseDatabase.getInstance().reference.child("github_trending")))
- .doOnSubscribe { sendToView { it.showProgress(0) } }
- .map {
- firebaseTrendingConfigModel = FirebaseTrendingConfigModel
- .map(it.value as? HashMap)
- return@map firebaseTrendingConfigModel
- }
- .subscribe(
- { callApi(lang, since) },
- { callApi(lang, since) }
- )
+ if (config == null) {
+ manageDisposable(RxHelper.getSingle(RxFirebaseDatabase.data(FirebaseDatabase.getInstance().reference.child("github_trending")))
+ .doOnSubscribe { sendToView { it.showProgress(0) } }
+ .map {
+ firebaseTrendingConfigModel = FirebaseTrendingConfigModel
+ .map(it.value as? HashMap)
+ return@map firebaseTrendingConfigModel
+ }
+ .subscribe(
+ { callApi(lang, since) },
+ { callApi(lang, since) }
)
- } else {
- callApi(lang, since)
- }
+ )
+ } else {
+ callApi(lang, since)
}
}
diff --git a/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml b/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml
index f34974ef..2c50457e 100644
--- a/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml
+++ b/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml
@@ -1,18 +1,17 @@
-
@@ -21,8 +20,8 @@
android:id="@+id/emojiesList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
android:scrollbarStyle="insideOverlay">
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+
+
+
+
diff --git a/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml
index 04708ca3..9cccb9dc 100644
--- a/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml
+++ b/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml
@@ -203,6 +203,29 @@
style="@style/TextAppearance.AppCompat.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/spacing_micro"
+ android:layout_gravity="center"
+ android:background="?android:selectableItemBackgroundBorderless"
+ android:gravity="center"
+ tools:text="100"/>
+
+
+
+
-
+ android:layout_marginStart="@dimen/avatar_margin"
+ android:layout_marginEnd="@dimen/avatar_margin_end" />
+ tools:text="When one acquires" />
+ tools:text="50 minutes" />
@@ -85,7 +84,7 @@
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:text="@string/owner"
- tools:visibility="visible"/>
+ tools:visibility="visible" />
+ android:src="@drawable/ic_add_emoji" />
+ android:src="@drawable/ic_overflow" />
-
+
+ android:layout_marginEnd="@dimen/spacing_xs_large"
+ android:layout_marginBottom="@dimen/spacing_micro"
+ android:textIsSelectable="true" />
+ android:visibility="gone"
+ tools:visibility="visible">
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+
+
+
+
@@ -214,13 +236,13 @@
android:id="@+id/labelsHolder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/spacing_normal"
- android:layout_marginEnd="@dimen/grid_spacing"
android:layout_marginStart="@dimen/grid_spacing"
android:layout_marginTop="@dimen/spacing_normal"
+ android:layout_marginEnd="@dimen/grid_spacing"
+ android:layout_marginBottom="@dimen/spacing_normal"
android:background="?card_background"
- android:paddingBottom="@dimen/spacing_normal"
android:paddingTop="@dimen/spacing_normal"
+ android:paddingBottom="@dimen/spacing_normal"
android:visibility="gone"
tools:visibility="visible">
@@ -229,7 +251,7 @@
style="@style/TextAppearance.AppCompat.Caption"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center"/>
+ android:gravity="center" />
\ No newline at end of file
diff --git a/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml
index da5229bd..143ccda3 100644
--- a/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml
+++ b/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml
@@ -1,12 +1,11 @@
-
+ android:layout_marginStart="@dimen/avatar_margin"
+ android:layout_marginEnd="@dimen/avatar_margin_end" />
+ tools:text="When one acquires" />
+ tools:text="50 minutes" />
@@ -76,7 +75,7 @@
android:textColor="?android:attr/textColorSecondary"
android:visibility="gone"
tools:text="@string/owner"
- tools:visibility="visible"/>
+ tools:visibility="visible" />
+ android:src="@drawable/ic_add_emoji" />
+ android:src="@drawable/ic_overflow" />
-
+
+ tools:text="Hello World" />
+ android:visibility="gone"
+ tools:visibility="visible">
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+ tools:text="100" />
+
+
+
+
diff --git a/app/src/main/res/menu/download_share_menu.xml b/app/src/main/res/menu/download_share_menu.xml
index 882e13a4..da51bf70 100644
--- a/app/src/main/res/menu/download_share_menu.xml
+++ b/app/src/main/res/menu/download_share_menu.xml
@@ -1,38 +1,44 @@
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2c0b7141..6e297161 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -604,4 +604,5 @@
No file changes
Send feedback
Unfortunately we cannot access private repos wiki
+ File History
diff --git a/build.gradle b/build.gradle
index c7749ffd..31b23c6c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,11 +3,10 @@ buildscript {
ext {
butterKnifeVersion = '10.2.1'
state_version = '1.4.1'
- lombokVersion = '1.16.20'
+ lombokVersion = '1.18.10'
supportVersion = "27.1.0"
- gms = "12.0.0"
thirtyinchVersion = '0.9.6'
- retrofit = '2.3.0'
+ retrofit = '2.7.0'
junitVersion = '4.12'
mockitoVersion = '1.10.19'
assertjVersion = '2.5.0'