Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit 7db5a9e

Browse files
Sam1301kunall17
authored andcommitted
Notifications for upload without progress.
1 parent 471fcff commit 7db5a9e

File tree

9 files changed

+63
-0
lines changed

9 files changed

+63
-0
lines changed

app/src/main/java/com/zulip/android/activities/ZulipActivity.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import android.annotation.TargetApi;
77
import android.app.AlertDialog;
88
import android.app.DatePickerDialog;
9+
import android.app.NotificationManager;
10+
import android.app.PendingIntent;
911
import android.app.SearchManager;
1012
import android.content.BroadcastReceiver;
1113
import android.content.ClipData;
@@ -44,6 +46,7 @@
4446
import android.support.v4.widget.DrawerLayout;
4547
import android.support.v4.widget.SimpleCursorAdapter;
4648
import android.support.v7.app.AppCompatDelegate;
49+
import android.support.v7.app.NotificationCompat;
4750
import android.support.v7.widget.LinearLayoutManager;
4851
import android.support.v7.widget.RecyclerView;
4952
import android.support.v7.widget.Toolbar;
@@ -557,6 +560,8 @@ public Cursor runQuery(CharSequence charSequence) {
557560
setupSnackBar();
558561
//Hides Keyboard if it was open with focus on an editText before restart of the activity
559562
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
563+
564+
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
560565
}
561566

562567
/**
@@ -1099,6 +1104,49 @@ private MultipartBody.Part prepareFilePart(String partName, File file) {
10991104
return MultipartBody.Part.createFormData(partName, file.getName(), requestFile);
11001105
}
11011106

1107+
NotificationManager mNotificationManager;
1108+
1109+
/**
1110+
* TODO: add description
1111+
*
1112+
* @param notificationId
1113+
* @param title
1114+
* @param content
1115+
*/
1116+
private void setNotification(int notificationId, String title, String content) {
1117+
NotificationCompat.Builder builder =
1118+
(NotificationCompat.Builder) new NotificationCompat.Builder(this)
1119+
.setSmallIcon(android.R.drawable.stat_sys_upload)
1120+
.setContentTitle(title)
1121+
.setContentText(content)
1122+
.setColor(getColor(R.color.notif_background));
1123+
PendingIntent contentIntent = PendingIntent.getActivity(
1124+
getApplicationContext(),
1125+
0,
1126+
new Intent(),
1127+
PendingIntent.FLAG_UPDATE_CURRENT);
1128+
builder.setContentIntent(contentIntent);
1129+
mNotificationManager.notify(notificationId, builder.build());
1130+
}
1131+
1132+
private void endNotification(int notificationId, String title, String content) {
1133+
NotificationCompat.Builder builder =
1134+
(NotificationCompat.Builder) new NotificationCompat.Builder(this)
1135+
.setSmallIcon(R.drawable.ic_done_white_24dp)
1136+
.setContentTitle(title)
1137+
.setContentText(content)
1138+
.setAutoCancel(true)
1139+
.setColor(getColor(R.color.notif_background));
1140+
1141+
PendingIntent contentIntent = PendingIntent.getActivity(
1142+
getApplicationContext(),
1143+
0,
1144+
new Intent(),
1145+
PendingIntent.FLAG_UPDATE_CURRENT);
1146+
builder.setContentIntent(contentIntent);
1147+
mNotificationManager.notify(notificationId, builder.build());
1148+
}
1149+
11021150
/**
11031151
* Function to upload file asynchronously to the server using retrofit callback
11041152
* upload {@link com.zulip.android.service.ZulipServices#upload(MultipartBody.Part)}
@@ -1112,6 +1160,10 @@ private void uploadFile(final File file) {
11121160

11131161
final String loadingMsg = getResources().getString(R.string.uploading_message);
11141162

1163+
// start notification
1164+
// TODO: handle different notif ids
1165+
setNotification(100, getString(R.string.notif_title), getString(R.string.init_notif_title));
1166+
11151167
// finally, execute the request
11161168
// create upload service client
11171169
Call<UploadResponse> call = ((ZulipApp) getApplicationContext()).getZulipServices().upload(body);
@@ -1122,6 +1174,7 @@ public void onSuccess(Call<UploadResponse> call, Response<UploadResponse> respon
11221174
UploadResponse uploadResponse = response.body();
11231175
filePathOnServer = uploadResponse.getUri();
11241176
if (!filePathOnServer.equals("")) {
1177+
endNotification(100, getString(R.string.notif_title), getString(R.string.finish_notif_title));
11251178
// remove loading message from the screen
11261179
sendingMessage(false, loadingMsg);
11271180

@@ -2354,6 +2407,10 @@ protected void onDestroy() {
23542407
statusUpdateHandler.removeMessages(0);
23552408
statusUpdateHandler.removeCallbacks(statusUpdateRunnable);
23562409
}
2410+
if (mNotificationManager == null) {
2411+
mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
2412+
mNotificationManager.cancelAll();
2413+
}
23572414
}
23582415

23592416
/**

app/src/main/java/com/zulip/android/service/ZulipServices.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import retrofit2.http.Part;
2525
import retrofit2.http.Path;
2626
import retrofit2.http.Query;
27+
import retrofit2.http.Streaming;
2728

2829

2930
public interface ZulipServices {
@@ -60,6 +61,7 @@ Call<GetMessagesResponse> getMessages(@Query("anchor") String anchor,
6061
@POST("v1/dev_fetch_api_key")
6162
Call<LoginResponse> loginDEV(@Field("username") String username);
6263

64+
@Streaming
6365
@Multipart
6466
@POST("v1/user_uploads")
6567
Call<UploadResponse> upload(@Part MultipartBody.Part file);
188 Bytes
Loading
139 Bytes
Loading
199 Bytes
Loading
255 Bytes
Loading
308 Bytes
Loading

app/src/main/res/values/colors.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@
3030
<color name="top_snackbar_bg_color">#000000</color>
3131
<color name="top_snackbar_text_color">#ffffff</color>
3232
<color name="progress_background_color">#444444</color>
33+
<color name="notif_background">#009688</color>
3334
</resources>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,7 @@
168168
<string name="people_drawer_others_label">New Private Message</string>
169169
<string name="mentions">\@-mentions</string>
170170
<string name="attach">Attach</string>
171+
<string name="notif_title">Upload to Zulip</string>
172+
<string name="init_notif_title">Starting upload</string>
173+
<string name="finish_notif_title">Complete</string>
171174
</resources>

0 commit comments

Comments
 (0)