Skip to content
This repository has been archived by the owner on Sep 30, 2021. It is now read-only.

Commit

Permalink
handling notifications click properly to close #17, extra step to par…
Browse files Browse the repository at this point in the history
…se notification urls to open their associate view.
  • Loading branch information
Kosh committed Feb 27, 2017
1 parent 90cd623 commit 9f642ab
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 27 deletions.
4 changes: 4 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@

<activity android:name=".ui.modules.search.SearchView"/>

<activity
android:name=".ui.modules.notification.NotificationActivityView"
android:label="@string/notifictions"/>

<activity
android:name=".ui.modules.parser.LinksParserActivity"
android:configChanges="keyboard|orientation|screenSize"
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/java/com/fastaccess/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,12 @@ public class App extends Application {
UILProvider.initUIL(this);
TypeFaceHelper.generateTypeface(this);
NotificationJobTask.scheduleJob(this);//schedule the job for the notifications
if (BuildConfig.DEBUG) {
if (BuildConfig.DEBUG) {//disable crash reporting while developing.
Thread.setDefaultUncaughtExceptionHandler((paramThread, paramThrowable) -> {
Log.e("Crash", paramThrowable.getMessage(), paramThrowable);
System.exit(2);
});
}

}

@NonNull public static App getInstance() {
Expand Down
38 changes: 30 additions & 8 deletions app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.annimon.stream.Stream;
import com.fastaccess.helper.ActivityHelper;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.helper.Logger;
import com.fastaccess.ui.modules.code.CodeViewerView;
import com.fastaccess.ui.modules.gists.gist.GistView;
import com.fastaccess.ui.modules.repos.RepoPagerView;
Expand Down Expand Up @@ -111,10 +112,20 @@ public static void launchUri(@NonNull Context context, @NonNull Uri data) {
@Nullable private static Intent getPullRequestIntent(@NonNull Context context, @NonNull Uri uri) {
List<String> segments = uri.getPathSegments();
if (segments == null || segments.size() < 4) return null;
if (!"pull".equals(segments.get(2))) return null;
String owner = segments.get(0);
String repo = segments.get(1);
String number = segments.get(3);
String owner;
String repo;
String number;
if ("pull".equals(segments.get(2))) {
owner = segments.get(0);
repo = segments.get(1);
number = segments.get(3);
} else if ("pull".equals(segments.get(3))) {//notifications url.
owner = segments.get(1);
repo = segments.get(2);
number = segments.get(4);
} else {
return null;
}
if (InputHelper.isEmpty(number))
return null;
int issueNumber;
Expand All @@ -130,10 +141,21 @@ public static void launchUri(@NonNull Context context, @NonNull Uri data) {
@Nullable private static Intent getIssueIntent(@NonNull Context context, @NonNull Uri uri) {
List<String> segments = uri.getPathSegments();
if (segments == null || segments.size() < 4) return null;
if (!"issues".equals(segments.get(2))) return null;
String owner = segments.get(0);
String repo = segments.get(1);
String number = segments.get(3);
Logger.e(segments, segments.size());
String owner;
String repo;
String number;
if ("issues".equals(segments.get(2))) {
owner = segments.get(0);
repo = segments.get(1);
number = segments.get(3);
} else if ("issues".equals(segments.get(3))) {//notifications url.
owner = segments.get(1);
repo = segments.get(2);
number = segments.get(4);
} else {
return null;
}
if (InputHelper.isEmpty(number))
return null;
int issueNumber;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@
import com.fastaccess.data.dao.LoginModel;
import com.fastaccess.data.dao.NotificationThreadModel;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.Logger;
import com.fastaccess.provider.rest.RestProvider;
import com.fastaccess.ui.modules.main.MainView;
import com.fastaccess.ui.modules.notification.NotificationActivityView;
import com.firebase.jobdispatcher.Constraint;
import com.firebase.jobdispatcher.FirebaseJobDispatcher;
import com.firebase.jobdispatcher.GooglePlayDriver;
Expand Down Expand Up @@ -45,7 +44,7 @@ public class NotificationJobTask extends JobService {
.subscribeOn(Schedulers.io())
.subscribe(item -> {
if (item != null) onSave(item.getItems());
}, throwable -> Logger.e(throwable.getMessage()));
}, Throwable::printStackTrace);
}
return false;
}
Expand Down Expand Up @@ -79,18 +78,19 @@ private void onNotifyUser(@NonNull List<NotificationThreadModel> notificationThr
long count = Stream.of(notificationThreadModels)
.filter(NotificationThreadModel::isUnread)
.count();
Logger.e(count, notificationThreadModels);
if (count > 0) {
Intent intent = new Intent(this, MainView.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Context context = getApplicationContext();
Intent intent = new Intent(this, NotificationActivityView.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_announcement)
.setContentTitle(context.getString(R.string.notifictions))
.setContentText(context.getString(R.string.unread_notification) + " (" + count + ")")
.setContentIntent(pendingIntent)
.setNumber((int) count)
.addAction(R.drawable.ic_github, context.getString(R.string.open), PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT))
.addAction(R.drawable.ic_github, context.getString(R.string.open), pendingIntent)
.build();
((NotificationManager) context.getSystemService(NOTIFICATION_SERVICE)).notify(BundleConstant.REQUEST_CODE, notification);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.fastaccess.ui.modules.notification;

import android.support.annotation.NonNull;

import com.fastaccess.R;
import com.fastaccess.ui.base.BaseActivity;
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;

import net.grandcentrix.thirtyinch.TiPresenter;

/**
* Created by Kosh on 27 Feb 2017, 12:36 PM
*/

public class NotificationActivityView extends BaseActivity {
@Override protected int layout() {
return R.layout.notification_activity_layout;
}

@Override protected boolean isTransparent() {
return false;
}

@Override protected boolean canBack() {
return true;
}

@Override protected boolean isSecured() {
return false;
}

@NonNull @Override public TiPresenter providePresenter() {
return new BasePresenter();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,19 @@ public class NotificationsPresenter extends BasePresenter<NotificationsMvp.View>
private ArrayList<NotificationThreadModel> notifications = new ArrayList<>();

@Override public void onItemClick(int position, View v, NotificationThreadModel item) {
makeRestCall(RestProvider.getNotificationService()
.markAsRead(String.valueOf(item.getId())),
booleanResponse -> {
item.setUnread(booleanResponse.code() == 205);
manageSubscription(item.save().subscribe());
notifications.remove(position);
sendToView(NotificationsMvp.View::onNotifyAdapter);
});
if (item.getRepository() != null) SchemeParser.launchUri(v.getContext(), Uri.parse(item.getRepository().getHtmlUrl()));
if (item.isUnread()) {
makeRestCall(RestProvider.getNotificationService()
.markAsRead(String.valueOf(item.getId())),
booleanResponse -> {
item.setUnread(booleanResponse.code() == 205);
manageSubscription(item.save().subscribe());
notifications.remove(position);
sendToView(NotificationsMvp.View::onNotifyAdapter);
});
}
if (item.getSubject() != null) {
SchemeParser.launchUri(v.getContext(), Uri.parse(item.getSubject().getUrl()));
}
}

@Override public void onItemLongClick(int position, View v, NotificationThreadModel item) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<include layout="@layout/appbar_elevation_dark"/>

<fragment
android:id="@+id/notificationFragment"
android:name="com.fastaccess.ui.modules.notification.NotificationsView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/scroll_behavior"
tools:layout="@layout/small_grid_refresh_list"/>

</android.support.design.widget.CoordinatorLayout>

0 comments on commit 9f642ab

Please sign in to comment.