Skip to content

Commit 6bc207b

Browse files
author
Suneet Srivastava
committed
Merge branch 'development' into permissions
2 parents c8d93e8 + 9d671ac commit 6bc207b

File tree

11 files changed

+186
-86
lines changed

11 files changed

+186
-86
lines changed

app/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ android {
9292

9393
configurations {
9494
implementation.exclude group: 'org.jetbrains', module: 'annotations'
95-
all*.exclude group: 'com.android.volley'
9695
}
9796

9897
lintOptions {
@@ -145,7 +144,10 @@ dependencies {
145144
androidTestImplementation 'androidx.test:runner:1.2.0'
146145
androidTestImplementation 'androidx.test:rules:1.2.0'
147146

148-
implementation 'com.mcxiaoke.volley:library:1.0.19'
147+
//retrofit
148+
implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
149+
implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
150+
implementation 'com.squareup.okhttp3:logging-interceptor:4.2.0'
149151

150152
//google and support
151153
implementation "androidx.appcompat:appcompat:$rootProject.supportLibraryVersion"

app/src/main/java/org/fossasia/phimpme/gallery/activities/LFMainActivity.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import androidx.appcompat.widget.SwitchCompat;
6666
import androidx.appcompat.widget.Toolbar;
6767
import androidx.cardview.widget.CardView;
68+
import androidx.core.app.ActivityCompat;
6869
import androidx.core.app.ActivityOptionsCompat;
6970
import androidx.core.content.ContextCompat;
7071
import androidx.core.view.GravityCompat;
@@ -1221,12 +1222,14 @@ public final void onActivityResult(
12211222
// endregion
12221223

12231224
private void requestSdCardPermissions() {
1224-
if (PermissionUtils.shouldShowPermissionRationale(
1225+
if (ActivityCompat.shouldShowRequestPermissionRationale(
12251226
this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
12261227
showPermissionAlertDialog();
12271228
} else {
1228-
PermissionUtils.requestPermissions(
1229-
this, REQUEST_CODE_SD_CARD_PERMISSIONS, Manifest.permission.WRITE_EXTERNAL_STORAGE);
1229+
ActivityCompat.requestPermissions(
1230+
this,
1231+
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
1232+
REQUEST_CODE_SD_CARD_PERMISSIONS);
12301233
}
12311234
}
12321235

@@ -4653,10 +4656,10 @@ public void onClick(DialogInterface dialog, int which) {
46534656
new DialogInterface.OnClickListener() {
46544657
@Override
46554658
public void onClick(DialogInterface dialog, int which) {
4656-
PermissionUtils.requestPermissions(
4659+
ActivityCompat.requestPermissions(
46574660
LFMainActivity.this,
4658-
REQUEST_CODE_SD_CARD_PERMISSIONS,
4659-
Manifest.permission.WRITE_EXTERNAL_STORAGE);
4661+
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
4662+
REQUEST_CODE_SD_CARD_PERMISSIONS);
46604663
}
46614664
});
46624665

app/src/main/java/org/fossasia/phimpme/gallery/activities/SplashScreen.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import android.widget.RelativeLayout;
1616
import androidx.annotation.NonNull;
1717
import androidx.appcompat.app.AlertDialog;
18+
import androidx.core.app.ActivityCompat;
1819
import androidx.core.content.ContextCompat;
1920
import butterknife.BindView;
2021
import butterknife.ButterKnife;
@@ -120,8 +121,8 @@ public void onAnimationCompleted(int loopNumber) {
120121
}
121122

122123
private void askForPermission() {
123-
String[] permissions = new String[] {Manifest.permission.READ_EXTERNAL_STORAGE};
124-
PermissionUtils.requestPermissions(this, READ_EXTERNAL_STORAGE_ID, permissions);
124+
ActivityCompat.requestPermissions(
125+
this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_ID);
125126
}
126127

127128
@Override
Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.fossasia.phimpme.gallery.util;
22

33
import android.Manifest;
4-
import android.app.Activity;
54
import android.content.Context;
65
import android.content.pm.PackageManager;
7-
import androidx.core.app.ActivityCompat;
86
import androidx.core.content.ContextCompat;
97

108
/** Created by dnld on 01/04/16. */
@@ -18,13 +16,4 @@ public static boolean checkPermission(Context context, String permission) {
1816
public static boolean isDeviceInfoGranted(Context context) {
1917
return checkPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
2018
}
21-
22-
public static void requestPermissions(
23-
Activity activity, int permissionId, String... permissions) {
24-
ActivityCompat.requestPermissions(activity, permissions, permissionId);
25-
}
26-
27-
public static boolean shouldShowPermissionRationale(Activity activity, String permission) {
28-
return ActivityCompat.shouldShowRequestPermissionRationale(activity, permission);
29-
}
3019
}

app/src/main/java/org/fossasia/phimpme/share/SharingActivity.java

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,6 @@
5454
import androidx.recyclerview.widget.RecyclerView;
5555
import butterknife.BindView;
5656
import butterknife.ButterKnife;
57-
import com.android.volley.AuthFailureError;
58-
import com.android.volley.DefaultRetryPolicy;
59-
import com.android.volley.Request;
60-
import com.android.volley.RequestQueue;
61-
import com.android.volley.Response;
62-
import com.android.volley.VolleyError;
63-
import com.android.volley.toolbox.StringRequest;
64-
import com.android.volley.toolbox.Volley;
6557
import com.box.androidsdk.content.BoxApiFile;
6658
import com.box.androidsdk.content.BoxConfig;
6759
import com.box.androidsdk.content.BoxException;
@@ -109,8 +101,6 @@
109101
import java.text.SimpleDateFormat;
110102
import java.util.ArrayList;
111103
import java.util.Date;
112-
import java.util.HashMap;
113-
import java.util.Map;
114104
import org.fossasia.phimpme.R;
115105
import org.fossasia.phimpme.base.PhimpmeProgressBarHandler;
116106
import org.fossasia.phimpme.base.RecyclerItemClickListner;
@@ -122,15 +112,20 @@
122112
import org.fossasia.phimpme.gallery.util.AlertDialogsHelper;
123113
import org.fossasia.phimpme.gallery.util.ThemeHelper;
124114
import org.fossasia.phimpme.share.flickr.FlickrHelper;
115+
import org.fossasia.phimpme.share.imgur.ImgurPicUploadReq;
116+
import org.fossasia.phimpme.share.imgur.ImgurPicUploadResp;
125117
import org.fossasia.phimpme.share.tumblr.TumblrClient;
126118
import org.fossasia.phimpme.share.twitter.HelperMethods;
127119
import org.fossasia.phimpme.utilities.ActivitySwitchHelper;
128120
import org.fossasia.phimpme.utilities.Constants;
121+
import org.fossasia.phimpme.utilities.ImgurApi;
129122
import org.fossasia.phimpme.utilities.NotificationHandler;
123+
import org.fossasia.phimpme.utilities.RetrofitClient;
130124
import org.fossasia.phimpme.utilities.SnackBarHandler;
131125
import org.fossasia.phimpme.utilities.Utils;
132-
import org.json.JSONException;
133-
import org.json.JSONObject;
126+
import retrofit2.Call;
127+
import retrofit2.Callback;
128+
import retrofit2.Response;
134129

135130
/**
136131
* Class which deals with Sharing images to multiple Account logged in by the user in the app. If
@@ -155,6 +150,9 @@ public class SharingActivity extends ThemedActivity
155150
OnRemoteOperationListener,
156151
RecyclerItemClickListner.OnItemClickListener {
157152

153+
private static final String IMGUR_BASE_URL = "https://api.imgur.com/3/";
154+
private static final String IMGUR_HEADER_CLIENT = "Client-ID";
155+
private static final String IMGUR_HEADER_USER = "Bearer";
158156
public static final String EXTRA_OUTPUT = "extra_output";
159157
private static String LOG_TAG = SharingActivity.class.getCanonicalName();
160158
public String saveFilePath;
@@ -202,9 +200,10 @@ public class SharingActivity extends ThemedActivity
202200
public String uploadName;
203201
private int positionShareOption;
204202
private boolean triedUploading = false;
203+
private ImgurApi imgurApiInterface;
205204

206205
public static String getClientAuth() {
207-
return Constants.IMGUR_HEADER_CLIENt + " " + Constants.MY_IMGUR_CLIENT_ID;
206+
return IMGUR_HEADER_CLIENT + " " + Constants.MY_IMGUR_CLIENT_ID;
208207
}
209208

210209
@Override
@@ -1015,14 +1014,17 @@ private void shareToWhatsapp() {
10151014
}
10161015

10171016
private void shareToImgur() {
1017+
if (imgurApiInterface == null) {
1018+
imgurApiInterface = RetrofitClient.getRetrofitClient(IMGUR_BASE_URL).create(ImgurApi.class);
1019+
}
10181020
final AlertDialog.Builder dialogBuilder =
10191021
new AlertDialog.Builder(SharingActivity.this, getDialogStyle());
10201022
RealmQuery<AccountDatabase> query = realm.where(AccountDatabase.class);
10211023
query.equalTo("name", getString(R.string.imgur));
10221024
final RealmResults<AccountDatabase> result = query.findAll();
10231025
if (result.size() != 0) {
10241026
isPersonal = true;
1025-
imgurAuth = Constants.IMGUR_HEADER_USER + " " + result.get(0).getToken();
1027+
imgurAuth = IMGUR_HEADER_USER + " " + result.get(0).getToken();
10261028
}
10271029
AlertDialogsHelper.getTextDialog(
10281030
SharingActivity.this, dialogBuilder, R.string.choose, R.string.imgur_select_mode, null);
@@ -1081,21 +1083,30 @@ void uploadImgur() {
10811083
Bitmap bitmap = getBitmapFromPath(saveFilePath);
10821084
final String imageString = getStringImage(bitmap);
10831085
// sending image to server
1084-
StringRequest request =
1085-
new StringRequest(
1086-
Request.Method.POST,
1087-
Constants.IMGUR_IMAGE_UPLOAD_URL,
1088-
new Response.Listener<String>() {
1086+
ImgurPicUploadReq imgurPicUpload = new ImgurPicUploadReq();
1087+
imgurPicUpload.setImage(imageString);
1088+
if (caption != null && !caption.isEmpty()) {
1089+
imgurPicUpload.setCaption(caption);
1090+
}
1091+
String authorization;
1092+
if (isPersonal && imgurAuth != null) {
1093+
authorization = imgurAuth;
1094+
} else {
1095+
authorization = getClientAuth();
1096+
}
1097+
imgurApiInterface
1098+
.uploadImageToImgur(authorization, imgurPicUpload)
1099+
.enqueue(
1100+
new Callback<ImgurPicUploadResp>() {
10891101
@Override
1090-
public void onResponse(String s) {
1091-
dialog.dismiss();
1092-
JSONObject jsonObject = null;
1093-
1094-
try {
1095-
jsonObject = new JSONObject(s);
1096-
Boolean success = jsonObject.getBoolean("success");
1102+
public void onResponse(
1103+
Call<ImgurPicUploadResp> call, Response<ImgurPicUploadResp> response) {
1104+
if (response.body() != null && response.isSuccessful()) {
1105+
dialog.dismiss();
1106+
ImgurPicUploadResp imgurPicUploadResp = response.body();
1107+
boolean success = imgurPicUploadResp.isSuccess();
10971108
if (success) {
1098-
final String url = jsonObject.getJSONObject("data").getString("link");
1109+
final String url = imgurPicUploadResp.getData().getLink();
10991110

11001111
if (isPersonal) {
11011112
imgurString = getString(R.string.upload_personal) + "\n" + url;
@@ -1143,45 +1154,18 @@ public void onClick(DialogInterface dialogInterface, int i) {
11431154
SnackBarHandler.create(parent, getString(R.string.error_on_imgur)).show();
11441155
sendResult(FAIL);
11451156
}
1146-
} catch (JSONException e) {
1147-
e.printStackTrace();
1157+
} else {
1158+
dialog.dismiss();
1159+
SnackBarHandler.create(parent, getString(R.string.error_volly)).show();
11481160
}
11491161
}
1150-
},
1151-
new Response.ErrorListener() {
1162+
11521163
@Override
1153-
public void onErrorResponse(VolleyError volleyError) {
1164+
public void onFailure(Call<ImgurPicUploadResp> call, Throwable t) {
11541165
dialog.dismiss();
1155-
SnackBarHandler.create(parent, getString(R.string.error_volly))
1156-
.show(); // add volleyError to check error
1157-
}
1158-
}) {
1159-
@Override
1160-
protected Map<String, String> getParams() throws AuthFailureError {
1161-
Map<String, String> parameters = new HashMap<String, String>();
1162-
parameters.put("image", imageString);
1163-
if (caption != null && !caption.isEmpty()) parameters.put("title", caption);
1164-
return parameters;
1165-
}
1166-
1167-
@Override
1168-
public Map<String, String> getHeaders() throws AuthFailureError {
1169-
Map<String, String> headers = new HashMap<String, String>();
1170-
if (isPersonal) {
1171-
if (imgurAuth != null) {
1172-
headers.put(getString(R.string.header_auth), imgurAuth);
1166+
SnackBarHandler.create(parent, getString(R.string.error_volly)).show();
11731167
}
1174-
} else {
1175-
headers.put(getString(R.string.header_auth), getClientAuth());
1176-
}
1177-
1178-
return headers;
1179-
}
1180-
};
1181-
request.setRetryPolicy(
1182-
new DefaultRetryPolicy(50000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
1183-
RequestQueue rQueue = Volley.newRequestQueue(SharingActivity.this);
1184-
rQueue.add(request);
1168+
});
11851169
}
11861170

11871171
/**
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.fossasia.phimpme.share.imgur;
2+
3+
public class ImgurPicUploadReq {
4+
String image;
5+
String caption;
6+
7+
public String getImage() {
8+
return image;
9+
}
10+
11+
public void setImage(String image) {
12+
this.image = image;
13+
}
14+
15+
public String getCaption() {
16+
return caption;
17+
}
18+
19+
public void setCaption(String caption) {
20+
this.caption = caption;
21+
}
22+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.fossasia.phimpme.share.imgur;
2+
3+
public class ImgurPicUploadResp {
4+
private boolean success;
5+
private Data data;
6+
7+
public boolean isSuccess() {
8+
return success;
9+
}
10+
11+
public void setSuccess(boolean success) {
12+
this.success = success;
13+
}
14+
15+
public Data getData() {
16+
return data;
17+
}
18+
19+
public void setData(Data data) {
20+
this.data = data;
21+
}
22+
23+
public static class Data {
24+
private String id;
25+
private String title;
26+
private String link;
27+
28+
public String getId() {
29+
return id;
30+
}
31+
32+
public void setId(String id) {
33+
this.id = id;
34+
}
35+
36+
public String getTitle() {
37+
return title;
38+
}
39+
40+
public void setTitle(String title) {
41+
this.title = title;
42+
}
43+
44+
public String getLink() {
45+
return link;
46+
}
47+
48+
public void setLink(String link) {
49+
this.link = link;
50+
}
51+
}
52+
}

app/src/main/java/org/fossasia/phimpme/utilities/Constants.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ public class Constants {
88
public static final int REQUEST_SHARE_RESULT = 50;
99
public static final String SHARE_RESULT = "share_result";
1010

11-
public static final String IMGUR_IMAGE_UPLOAD_URL = "https://api.imgur.com/3/image/";
12-
public static String IMGUR_HEADER_CLIENt = "Client-ID";
13-
public static String IMGUR_HEADER_USER = "Bearer";
14-
1511
/*Also add dropbox api key in manifest */
1612
public static final String DROPBOX_APP_KEY = "7fhwc9meece1m9g";
1713
public static final String DROPBOX_APP_SECRET = "m5567c8v5yt1qc1";
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.fossasia.phimpme.utilities;
2+
3+
import org.fossasia.phimpme.share.imgur.ImgurPicUploadReq;
4+
import org.fossasia.phimpme.share.imgur.ImgurPicUploadResp;
5+
import retrofit2.Call;
6+
import retrofit2.http.Body;
7+
import retrofit2.http.Header;
8+
import retrofit2.http.POST;
9+
10+
public interface ImgurApi {
11+
12+
@POST("/image")
13+
Call<ImgurPicUploadResp> uploadImageToImgur(
14+
@Header("Authorization") String authorization, @Body ImgurPicUploadReq body);
15+
}

0 commit comments

Comments
 (0)