3737import android .text .Editable ;
3838import android .text .TextUtils ;
3939import android .text .TextWatcher ;
40+ import android .util .ArrayMap ;
4041import android .util .Log ;
4142import android .view .View ;
4243import android .view .WindowManager ;
5455import androidx .recyclerview .widget .RecyclerView ;
5556import butterknife .BindView ;
5657import 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 ;
6558import com .box .androidsdk .content .BoxApiFile ;
6659import com .box .androidsdk .content .BoxConfig ;
6760import com .box .androidsdk .content .BoxException ;
7871import com .dropbox .core .v2 .DbxClientV2 ;
7972import com .dropbox .core .v2 .files .WriteMode ;
8073import com .google .android .material .snackbar .Snackbar ;
74+ import com .google .gson .JsonElement ;
8175import com .mikepenz .community_material_typeface_library .CommunityMaterial ;
8276import com .mikepenz .iconics .view .IconicsImageView ;
8377import com .owncloud .android .lib .common .OwnCloudClient ;
109103import java .text .SimpleDateFormat ;
110104import java .util .ArrayList ;
111105import java .util .Date ;
112- import java .util .HashMap ;
113- import java .util .Map ;
114106import org .fossasia .phimpme .R ;
115107import org .fossasia .phimpme .base .PhimpmeProgressBarHandler ;
116108import org .fossasia .phimpme .base .RecyclerItemClickListner ;
126118import org .fossasia .phimpme .share .twitter .HelperMethods ;
127119import org .fossasia .phimpme .utilities .ActivitySwitchHelper ;
128120import org .fossasia .phimpme .utilities .Constants ;
121+ import org .fossasia .phimpme .utilities .ImgurApi ;
129122import org .fossasia .phimpme .utilities .NotificationHandler ;
123+ import org .fossasia .phimpme .utilities .RetrofitClient ;
130124import org .fossasia .phimpme .utilities .SnackBarHandler ;
131125import org .fossasia .phimpme .utilities .Utils ;
132126import org .json .JSONException ;
133127import org .json .JSONObject ;
128+ import retrofit2 .Call ;
129+ import retrofit2 .Callback ;
130+ import retrofit2 .Response ;
134131
135132/**
136133 * Class which deals with Sharing images to multiple Account logged in by the user in the app. If
@@ -155,7 +152,10 @@ public class SharingActivity extends ThemedActivity
155152 OnRemoteOperationListener ,
156153 RecyclerItemClickListner .OnItemClickListener {
157154
155+ private static final String IMGUR_BASE_URL = "https://api.imgur.com/3/" ;
158156 public static final String EXTRA_OUTPUT = "extra_output" ;
157+ public static String IMGUR_HEADER_CLIENT = "Client-ID" ;
158+ public String IMGUR_HEADER_USER = "Bearer" ;
159159 private static String LOG_TAG = SharingActivity .class .getCanonicalName ();
160160 public String saveFilePath ;
161161 ThemeHelper themeHelper ;
@@ -202,9 +202,10 @@ public class SharingActivity extends ThemedActivity
202202 public String uploadName ;
203203 private int positionShareOption ;
204204 private boolean triedUploading = false ;
205+ private ImgurApi imgurApiInterface ;
205206
206207 public static String getClientAuth () {
207- return Constants . IMGUR_HEADER_CLIENt + " " + Constants .MY_IMGUR_CLIENT_ID ;
208+ return IMGUR_HEADER_CLIENT + " " + Constants .MY_IMGUR_CLIENT_ID ;
208209 }
209210
210211 @ Override
@@ -1015,14 +1016,17 @@ private void shareToWhatsapp() {
10151016 }
10161017
10171018 private void shareToImgur () {
1019+ if (imgurApiInterface == null ) {
1020+ imgurApiInterface = RetrofitClient .getRetrofitClient (IMGUR_BASE_URL ).create (ImgurApi .class );
1021+ }
10181022 final AlertDialog .Builder dialogBuilder =
10191023 new AlertDialog .Builder (SharingActivity .this , getDialogStyle ());
10201024 RealmQuery <AccountDatabase > query = realm .where (AccountDatabase .class );
10211025 query .equalTo ("name" , getString (R .string .imgur ));
10221026 final RealmResults <AccountDatabase > result = query .findAll ();
10231027 if (result .size () != 0 ) {
10241028 isPersonal = true ;
1025- imgurAuth = Constants . IMGUR_HEADER_USER + " " + result .get (0 ).getToken ();
1029+ imgurAuth = IMGUR_HEADER_USER + " " + result .get (0 ).getToken ();
10261030 }
10271031 AlertDialogsHelper .getTextDialog (
10281032 SharingActivity .this , dialogBuilder , R .string .choose , R .string .imgur_select_mode , null );
@@ -1081,107 +1085,93 @@ void uploadImgur() {
10811085 Bitmap bitmap = getBitmapFromPath (saveFilePath );
10821086 final String imageString = getStringImage (bitmap );
10831087 // 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 >() {
1088+ ArrayMap <String , String > body = new ArrayMap <>();
1089+ body .put ("image" , imageString );
1090+ if (caption != null && !caption .isEmpty ()) {
1091+ body .put ("title" , caption );
1092+ }
1093+ String authorization ;
1094+ if (isPersonal && imgurAuth != null ) {
1095+ authorization = imgurAuth ;
1096+ } else {
1097+ authorization = getClientAuth ();
1098+ }
1099+ imgurApiInterface
1100+ .uploadImageToImgur (authorization , body )
1101+ .enqueue (
1102+ new Callback <JsonElement >() {
10891103 @ 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" );
1097- if (success ) {
1098- final String url = jsonObject .getJSONObject ("data" ).getString ("link" );
1104+ public void onResponse (Call <JsonElement > call , Response <JsonElement > response ) {
1105+ if (response .body () != null && response .isSuccessful ()) {
1106+ dialog .dismiss ();
1107+ JSONObject jsonObject = null ;
1108+ try {
1109+ jsonObject = new JSONObject (response .body ().toString ());
1110+ boolean success = jsonObject .getBoolean ("success" );
1111+ if (success ) {
1112+ final String url = jsonObject .getJSONObject ("data" ).getString ("link" );
1113+
1114+ if (isPersonal ) {
1115+ imgurString = getString (R .string .upload_personal ) + "\n " + url ;
1116+ } else {
1117+ imgurString = getString (R .string .upload_anonymous ) + "\n " + url ;
1118+ }
10991119
1100- if (isPersonal ) {
1101- imgurString = getString (R .string .upload_personal ) + "\n " + url ;
1120+ AlertDialogsHelper .getTextDialog (
1121+ SharingActivity .this ,
1122+ dialogBuilder ,
1123+ R .string .imgur_uplaoded_dialog_title ,
1124+ 0 ,
1125+ imgurString );
1126+ dialogBuilder .setPositiveButton (
1127+ getString (R .string .share ).toUpperCase (),
1128+ new DialogInterface .OnClickListener () {
1129+ @ Override
1130+ public void onClick (DialogInterface dialogInterface , int i ) {
1131+ shareMsgOnIntent (SharingActivity .this , url );
1132+ sendResult (Constants .SUCCESS );
1133+ }
1134+ });
1135+
1136+ dialogBuilder .setNeutralButton (
1137+ getString (R .string .copy_action ).toUpperCase (),
1138+ new DialogInterface .OnClickListener () {
1139+ @ Override
1140+ public void onClick (DialogInterface dialogInterface , int i ) {
1141+ copyToClipBoard (SharingActivity .this , url );
1142+ sendResult (Constants .SUCCESS );
1143+ }
1144+ });
1145+ dialogBuilder .setNegativeButton (getString (R .string .exit ).toUpperCase (), null );
1146+ AlertDialog alertDialog = dialogBuilder .create ();
1147+ alertDialog .show ();
1148+ AlertDialogsHelper .setButtonTextColor (
1149+ new int [] {
1150+ DialogInterface .BUTTON_POSITIVE ,
1151+ DialogInterface .BUTTON_NEGATIVE ,
1152+ DialogInterface .BUTTON_NEUTRAL
1153+ },
1154+ getAccentColor (),
1155+ alertDialog );
11021156 } else {
1103- imgurString = getString (R .string .upload_anonymous ) + "\n " + url ;
1157+ SnackBarHandler .create (parent , getString (R .string .error_on_imgur )).show ();
1158+ sendResult (FAIL );
11041159 }
1105-
1106- AlertDialogsHelper .getTextDialog (
1107- SharingActivity .this ,
1108- dialogBuilder ,
1109- R .string .imgur_uplaoded_dialog_title ,
1110- 0 ,
1111- imgurString );
1112- dialogBuilder .setPositiveButton (
1113- getString (R .string .share ).toUpperCase (),
1114- new DialogInterface .OnClickListener () {
1115- @ Override
1116- public void onClick (DialogInterface dialogInterface , int i ) {
1117- shareMsgOnIntent (SharingActivity .this , url );
1118- sendResult (Constants .SUCCESS );
1119- }
1120- });
1121-
1122- dialogBuilder .setNeutralButton (
1123- getString (R .string .copy_action ).toUpperCase (),
1124- new DialogInterface .OnClickListener () {
1125- @ Override
1126- public void onClick (DialogInterface dialogInterface , int i ) {
1127- copyToClipBoard (SharingActivity .this , url );
1128- sendResult (Constants .SUCCESS );
1129- }
1130- });
1131- dialogBuilder .setNegativeButton (getString (R .string .exit ).toUpperCase (), null );
1132- AlertDialog alertDialog = dialogBuilder .create ();
1133- alertDialog .show ();
1134- AlertDialogsHelper .setButtonTextColor (
1135- new int [] {
1136- DialogInterface .BUTTON_POSITIVE ,
1137- DialogInterface .BUTTON_NEGATIVE ,
1138- DialogInterface .BUTTON_NEUTRAL
1139- },
1140- getAccentColor (),
1141- alertDialog );
1142- } else {
1143- SnackBarHandler .create (parent , getString (R .string .error_on_imgur )).show ();
1144- sendResult (FAIL );
1160+ } catch (JSONException e ) {
1161+ e .printStackTrace ();
11451162 }
1146- } catch (JSONException e ) {
1147- e .printStackTrace ();
1163+ } else {
1164+ dialog .dismiss ();
1165+ SnackBarHandler .create (parent , getString (R .string .error_volly )).show ();
11481166 }
11491167 }
1150- },
1151- new Response .ErrorListener () {
1168+
11521169 @ Override
1153- public void onErrorResponse ( VolleyError volleyError ) {
1170+ public void onFailure ( Call < JsonElement > call , Throwable t ) {
11541171 dialog .dismiss ();
1155- SnackBarHandler .create (parent , getString (R .string .error_volly ))
1156- .show (); // add volleyError to check error
1172+ SnackBarHandler .create (parent , getString (R .string .error_volly )).show ();
11571173 }
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 );
1173- }
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 );
1174+ });
11851175 }
11861176
11871177 /**
0 commit comments