mirror of
				https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
				synced 2025-10-31 17:08:11 +01:00 
			
		
		
		
	Create PostMediaService to submit video and image posts.
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								.idea/caches/build_file_checksums.ser
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.idea/caches/build_file_checksums.ser
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.idea/caches/gradle_models.ser
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.idea/caches/gradle_models.ser
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -10,6 +10,8 @@ | ||||
|         android:name="android.permission.WRITE_EXTERNAL_STORAGE" | ||||
|         android:maxSdkVersion="22" /> | ||||
|  | ||||
|     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> | ||||
|  | ||||
|     <application | ||||
|         android:name=".Infinity" | ||||
|         android:allowBackup="true" | ||||
| @@ -19,6 +21,11 @@ | ||||
|         android:supportsRtl="true" | ||||
|         android:theme="@style/AppTheme" | ||||
|         android:usesCleartextTraffic="true"> | ||||
|         <service | ||||
|             android:name=".PostMediaService" | ||||
|             android:enabled="true" | ||||
|             android:exported="false"></service> | ||||
|  | ||||
|         <activity | ||||
|             android:name=".FilteredPostsActivity" | ||||
|             android:parentActivityName=".MainActivity" | ||||
| @@ -62,17 +69,20 @@ | ||||
|             android:name=".PostVideoActivity" | ||||
|             android:label="@string/post_video_activity_label" | ||||
|             android:parentActivityName=".MainActivity" | ||||
|             android:theme="@style/AppTheme.NoActionBar" /> | ||||
|             android:theme="@style/AppTheme.NoActionBar" | ||||
|             android:windowSoftInputMode="adjustResize" /> | ||||
|         <activity | ||||
|             android:name=".PostImageActivity" | ||||
|             android:label="@string/post_image_activity_label" | ||||
|             android:parentActivityName=".MainActivity" | ||||
|             android:theme="@style/AppTheme.NoActionBar" /> | ||||
|             android:theme="@style/AppTheme.NoActionBar" | ||||
|             android:windowSoftInputMode="adjustResize" /> | ||||
|         <activity | ||||
|             android:name=".PostLinkActivity" | ||||
|             android:label="@string/post_link_activity_label" | ||||
|             android:parentActivityName=".MainActivity" | ||||
|             android:theme="@style/AppTheme.NoActionBar" /> | ||||
|             android:theme="@style/AppTheme.NoActionBar" | ||||
|             android:windowSoftInputMode="adjustResize" /> | ||||
|         <activity | ||||
|             android:name=".SubscribedThingListingActivity" | ||||
|             android:label="@string/subscriptions" | ||||
|   | ||||
| @@ -41,7 +41,7 @@ public class CustomMarkwonView extends MarkwonView { | ||||
|                 builder.setToolbarColor(context.getResources().getColor(R.color.colorPrimary)); | ||||
|                 CustomTabsIntent customTabsIntent = builder.build(); | ||||
|                 Uri uri = Uri.parse(link); | ||||
|                 if(uri.getHost() != null && uri.getHost().equals("www.reddit.com")) { | ||||
|                 if(uri.getHost() != null && uri.getHost().contains("reddit.com")) { | ||||
|                     customTabsIntent.intent.setPackage(context.getPackageName()); | ||||
|                 } | ||||
|                 customTabsIntent.launchUrl(context, uri); | ||||
|   | ||||
| @@ -25,4 +25,5 @@ interface AppComponent { | ||||
|     void inject(FlairBottomSheetFragment flairBottomSheetFragment); | ||||
|     void inject(RulesActivity rulesActivity); | ||||
|     void inject(CommentsListingFragment commentsListingFragment); | ||||
|     void inject(PostMediaService postMediaService); | ||||
| } | ||||
|   | ||||
| @@ -309,8 +309,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe | ||||
|                 loadUserData(); | ||||
|                 return true; | ||||
|             case R.id.action_lazy_mode_main_activity: | ||||
|                 MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity); | ||||
|                 /*if(isInLazyMode) { | ||||
|                 /*MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity); | ||||
|                 if(isInLazyMode) { | ||||
|                     isInLazyMode = false; | ||||
|                     ((FragmentCommunicator) mFragment).stopLazyMode(); | ||||
|                     lazyModeItem.setTitle(R.string.action_start_lazy_mode); | ||||
|   | ||||
| @@ -0,0 +1,5 @@ | ||||
| package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| class NotificationUtils { | ||||
|     static final String CHANNEL_POST_MEDIA = "Post Media"; | ||||
| } | ||||
| @@ -2,9 +2,8 @@ package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.graphics.Bitmap; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.Environment; | ||||
| import android.provider.MediaStore; | ||||
| @@ -15,7 +14,6 @@ import android.widget.Button; | ||||
| import android.widget.EditText; | ||||
| import android.widget.ImageView; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| @@ -28,15 +26,15 @@ import androidx.core.content.FileProvider; | ||||
| import com.bumptech.glide.Glide; | ||||
| import com.bumptech.glide.RequestManager; | ||||
| import com.bumptech.glide.request.RequestOptions; | ||||
| import com.bumptech.glide.request.target.CustomTarget; | ||||
| import com.bumptech.glide.request.transition.Transition; | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton; | ||||
| import com.google.android.material.snackbar.Snackbar; | ||||
| import com.libRG.CustomTextView; | ||||
|  | ||||
| import org.greenrobot.eventbus.EventBus; | ||||
| import org.greenrobot.eventbus.Subscribe; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Locale; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| import javax.inject.Named; | ||||
| @@ -46,8 +44,6 @@ import butterknife.BindView; | ||||
| import butterknife.ButterKnife; | ||||
| import jp.wasabeef.glide.transformations.RoundedCornersTransformation; | ||||
| import pl.droidsonroids.gif.GifImageView; | ||||
| import retrofit2.Call; | ||||
| import retrofit2.Callback; | ||||
| import retrofit2.Retrofit; | ||||
|  | ||||
| public class PostImageActivity extends AppCompatActivity implements FlairBottomSheetFragment.FlairSelectionCallback { | ||||
| @@ -60,6 +56,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|     private static final String SUBREDDIT_IS_USER_STATE = "SIUS"; | ||||
|     private static final String IMAGE_URI_STATE = "IUS"; | ||||
|     private static final String LOAD_SUBREDDIT_ICON_STATE = "LSIS"; | ||||
|     private static final String IS_POSTING_STATE = "IPS"; | ||||
|     private static final String FLAIR_STATE = "FS"; | ||||
|     private static final String IS_SPOILER_STATE = "ISS"; | ||||
|     private static final String IS_NSFW_STATE = "INS"; | ||||
| @@ -88,15 +85,17 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|     private boolean subredditSelected = false; | ||||
|     private boolean subredditIsUser; | ||||
|     private boolean loadSubredditIconSuccessful = true; | ||||
|     private boolean isPosting; | ||||
|     private Uri imageUri; | ||||
|  | ||||
|     private String flair = null; | ||||
|     private boolean isSpoiler = false; | ||||
|     private boolean isNSFW = false; | ||||
|  | ||||
|     private Menu mMemu; | ||||
|     private RequestManager mGlide; | ||||
|     private Locale mLocale; | ||||
|     private FlairBottomSheetFragment flairSelectionBottomSheetFragment; | ||||
|     private Snackbar mPostingSnackbar; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("no_oauth") | ||||
| @@ -125,13 +124,14 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|  | ||||
|         ButterKnife.bind(this); | ||||
|  | ||||
|         EventBus.getDefault().register(this); | ||||
|  | ||||
|         ((Infinity) getApplication()).getmAppComponent().inject(this); | ||||
|  | ||||
|         setSupportActionBar(toolbar); | ||||
|         getSupportActionBar().setDisplayHomeAsUpEnabled(true); | ||||
|  | ||||
|         mGlide = Glide.with(this); | ||||
|         mLocale = getResources().getConfiguration().locale; | ||||
|  | ||||
|         if(savedInstanceState != null) { | ||||
|             subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE); | ||||
| @@ -139,6 +139,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|             subredditSelected = savedInstanceState.getBoolean(SUBREDDIT_SELECTED_STATE); | ||||
|             subredditIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE); | ||||
|             loadSubredditIconSuccessful = savedInstanceState.getBoolean(LOAD_SUBREDDIT_ICON_STATE); | ||||
|             isPosting = savedInstanceState.getBoolean(IS_POSTING_STATE); | ||||
|             flair = savedInstanceState.getString(FLAIR_STATE); | ||||
|             isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE); | ||||
|             isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE); | ||||
| @@ -157,6 +158,11 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|             } | ||||
|             displaySubredditIcon(); | ||||
|  | ||||
|             if(isPosting) { | ||||
|                 mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 mPostingSnackbar.show(); | ||||
|             } | ||||
|  | ||||
|             if(flair != null) { | ||||
|                 flairTextView.setText(flair); | ||||
|                 flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark)); | ||||
| @@ -168,6 +174,8 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|                 nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent)); | ||||
|             } | ||||
|         } else { | ||||
|             isPosting = false; | ||||
|  | ||||
|             if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) { | ||||
|                 subredditName = getIntent().getExtras().getString(EXTRA_SUBREDDIT_NAME); | ||||
|                 subreditNameTextView.setText(subredditName); | ||||
| @@ -302,6 +310,11 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|     @Override | ||||
|     public boolean onCreateOptionsMenu(Menu menu) { | ||||
|         getMenuInflater().inflate(R.menu.post_image_activity, menu); | ||||
|         mMemu = menu; | ||||
|         if(isPosting) { | ||||
|             mMemu.findItem(R.id.action_send_post_image_activity).setEnabled(false); | ||||
|             mMemu.findItem(R.id.action_send_post_image_activity).getIcon().setAlpha(130); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| @@ -322,10 +335,12 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|                     return true; | ||||
|                 } | ||||
|  | ||||
|                 isPosting = true; | ||||
|  | ||||
|                 item.setEnabled(false); | ||||
|                 item.getIcon().setAlpha(130); | ||||
|                 Snackbar postingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 postingSnackbar.show(); | ||||
|                 mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 mPostingSnackbar.show(); | ||||
|  | ||||
|                 String subredditName; | ||||
|                 if(subredditIsUser) { | ||||
| @@ -334,76 +349,27 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|                     subredditName = subreditNameTextView.getText().toString(); | ||||
|                 } | ||||
|  | ||||
|                 Glide.with(this) | ||||
|                         .asBitmap() | ||||
|                         .load(imageUri) | ||||
|                         .into(new CustomTarget<Bitmap>() { | ||||
|                 Intent intent = new Intent(this, PostMediaService.class); | ||||
|                 intent.setData(imageUri); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_SUBREDDIT_NAME, subredditName); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_TITLE, titleEditText.getText().toString()); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_FLAIR, flair); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_IS_SPOILER, isSpoiler); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_IS_NSFW, isNSFW); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_POST_TYPE, PostMediaService.EXTRA_POST_TYPE_IMAGE); | ||||
|  | ||||
|                             @Override | ||||
|                             public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { | ||||
|                                 SubmitPost.submitImagePost(mOauthRetrofit, mUploadMediaRetrofit, sharedPreferences, | ||||
|                                         mLocale, subredditName, titleEditText.getText().toString(), resource, | ||||
|                                         flair, isSpoiler, isNSFW, new SubmitPost.SubmitPostListener() { | ||||
|                                             @Override | ||||
|                                             public void submitSuccessful(Post post) { | ||||
|                                                 RedditAPI api = mOauthRetrofit.create(RedditAPI.class); | ||||
|                                                 Call<String> getPost = api.getUserBestPosts(mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, ""), null, | ||||
|                                                         RedditUtils.getOAuthHeader(sharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, ""))); | ||||
|                                                 getPost.enqueue(new Callback<String>() { | ||||
|                                                     @Override | ||||
|                                                     public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { | ||||
|                                                         if(response.isSuccessful()) { | ||||
|                                                             Toast.makeText(PostImageActivity.this, R.string.image_is_processing, Toast.LENGTH_SHORT).show(); | ||||
|                                                             Intent intent = new Intent(PostImageActivity.this, ViewUserDetailActivity.class); | ||||
|                                                             intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, | ||||
|                                                                     mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, "")); | ||||
|                                                             startActivity(intent); | ||||
|                                                             finish(); | ||||
|                                                         } else { | ||||
|                                                             startViewUserDetailActivity(); | ||||
|                                                         } | ||||
|                                                     } | ||||
|                 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|                     startForegroundService(intent); | ||||
|                 } else { | ||||
|                     startService(intent); | ||||
|                 } | ||||
|  | ||||
|                                                     @Override | ||||
|                                                     public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) { | ||||
|                                                         startViewUserDetailActivity(); | ||||
|                                                     } | ||||
|                                                 }); | ||||
|                                             } | ||||
|  | ||||
|                                             @Override | ||||
|                                             public void submitFailed(@Nullable String errorMessage) { | ||||
|                                                 postingSnackbar.dismiss(); | ||||
|                                                 item.setEnabled(true); | ||||
|                                                 item.getIcon().setAlpha(255); | ||||
|                                                 if(errorMessage == null) { | ||||
|                                                     Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); | ||||
|                                                 } else { | ||||
|                                                     Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_SHORT).show(); | ||||
|                                                 } | ||||
|                                             } | ||||
|                                         }); | ||||
|                             } | ||||
|  | ||||
|                             @Override | ||||
|                             public void onLoadCleared(@Nullable Drawable placeholder) { | ||||
|  | ||||
|                             } | ||||
|                         }); | ||||
|                 return true; | ||||
|         } | ||||
|  | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     private void startViewUserDetailActivity() { | ||||
|         Intent intent = new Intent(PostImageActivity.this, ViewUserDetailActivity.class); | ||||
|         intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, | ||||
|                 mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, "")); | ||||
|         startActivity(intent); | ||||
|         finish(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onSaveInstanceState(@NonNull Bundle outState) { | ||||
|         super.onSaveInstanceState(outState); | ||||
| @@ -415,6 +381,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|             outState.putString(IMAGE_URI_STATE, imageUri.toString()); | ||||
|         } | ||||
|         outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful); | ||||
|         outState.putBoolean(IS_POSTING_STATE, isPosting); | ||||
|         outState.putString(FLAIR_STATE, flair); | ||||
|         outState.putBoolean(IS_SPOILER_STATE, isSpoiler); | ||||
|         outState.putBoolean(IS_NSFW_STATE, isNSFW); | ||||
| @@ -456,6 +423,12 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onDestroy() { | ||||
|         EventBus.getDefault().unregister(this); | ||||
|         super.onDestroy(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void flairSelected(String flair) { | ||||
|         this.flair = flair; | ||||
| @@ -463,4 +436,25 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS | ||||
|         flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark)); | ||||
|         flairSelectionBottomSheetFragment.dismiss(); | ||||
|     } | ||||
|  | ||||
|     @Subscribe | ||||
|     public void onSubmitImagePostEvent(SubmitImagePostEvent submitImagePostEvent) { | ||||
|         isPosting = false; | ||||
|         if(submitImagePostEvent.postSuccess) { | ||||
|             Intent intent = new Intent(this, ViewUserDetailActivity.class); | ||||
|             intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, | ||||
|                     mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, "")); | ||||
|             startActivity(intent); | ||||
|             finish(); | ||||
|         } else { | ||||
|             mPostingSnackbar.dismiss(); | ||||
|             mMemu.getItem(R.id.action_send_post_image_activity).setEnabled(true); | ||||
|             mMemu.getItem(R.id.action_send_post_image_activity).getIcon().setAlpha(255); | ||||
|             if (submitImagePostEvent.errorMessage == null || submitImagePostEvent.errorMessage.equals("")) { | ||||
|                 Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); | ||||
|             } else { | ||||
|                 Snackbar.make(coordinatorLayout, submitImagePostEvent.errorMessage, Snackbar.LENGTH_SHORT).show(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,203 @@ | ||||
| package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| import android.app.Notification; | ||||
| import android.app.NotificationChannel; | ||||
| import android.app.NotificationManager; | ||||
| import android.app.Service; | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.graphics.Bitmap; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.IBinder; | ||||
| import android.os.ParcelFileDescriptor; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.core.app.NotificationCompat; | ||||
|  | ||||
| import com.bumptech.glide.Glide; | ||||
| import com.bumptech.glide.request.target.CustomTarget; | ||||
| import com.bumptech.glide.request.transition.Transition; | ||||
|  | ||||
| import org.greenrobot.eventbus.EventBus; | ||||
|  | ||||
| import java.io.FileInputStream; | ||||
| import java.io.IOException; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| import javax.inject.Named; | ||||
|  | ||||
| import retrofit2.Retrofit; | ||||
|  | ||||
| public class PostMediaService extends Service { | ||||
|     static final String EXTRA_SUBREDDIT_NAME = "ESN"; | ||||
|     static final String EXTRA_TITLE = "ET"; | ||||
|     static final String EXTRA_FLAIR = "EF"; | ||||
|     static final String EXTRA_IS_SPOILER = "EIS"; | ||||
|     static final String EXTRA_IS_NSFW = "EIN"; | ||||
|     static final String EXTRA_POST_TYPE = "EPT"; | ||||
|     static final int EXTRA_POST_TYPE_IMAGE = 0; | ||||
|     static final int EXTRA_POST_TYPE_VIDEO = 1; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("oauth") | ||||
|     Retrofit mOauthRetrofit; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("upload_media") | ||||
|     Retrofit mUploadMediaRetrofit; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("upload_video") | ||||
|     Retrofit mUploadVideoRetrofit; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("user_info") | ||||
|     SharedPreferences mUserInfoSharedPreferences; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("auth_info") | ||||
|     SharedPreferences sharedPreferences; | ||||
|  | ||||
|     public PostMediaService() { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public IBinder onBind(Intent intent) { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int onStartCommand(Intent intent, int flags, int startId) { | ||||
|         ((Infinity) getApplication()).getmAppComponent().inject(this); | ||||
|  | ||||
|         Uri mediaUri = intent.getData(); | ||||
|         String subredditName = intent.getExtras().getString(EXTRA_SUBREDDIT_NAME); | ||||
|         String title = intent.getExtras().getString(EXTRA_TITLE); | ||||
|         String flair = intent.getExtras().getString(EXTRA_FLAIR); | ||||
|         boolean isSpoiler = intent.getExtras().getBoolean(EXTRA_IS_SPOILER); | ||||
|         boolean isNSFW = intent.getExtras().getBoolean(EXTRA_IS_NSFW); | ||||
|         int postType = intent.getExtras().getInt(EXTRA_POST_TYPE); | ||||
|  | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|             NotificationChannel serviceChannel = new NotificationChannel( | ||||
|                     NotificationUtils.CHANNEL_POST_MEDIA, | ||||
|                     NotificationUtils.CHANNEL_POST_MEDIA, | ||||
|                     NotificationManager.IMPORTANCE_LOW | ||||
|             ); | ||||
|  | ||||
|             NotificationManager manager = getSystemService(NotificationManager.class); | ||||
|             manager.createNotificationChannel(serviceChannel); | ||||
|         } | ||||
|  | ||||
|         if(postType == EXTRA_POST_TYPE_IMAGE) { | ||||
|             startForeground(1, createNotification(R.string.posting_image)); | ||||
|             submitImagePost(mediaUri, subredditName, title, flair, isSpoiler, isNSFW); | ||||
|         } else { | ||||
|             startForeground(1, createNotification(R.string.posting_video)); | ||||
|             submitVideoPost(mediaUri, subredditName, title, flair, isSpoiler, isNSFW); | ||||
|         } | ||||
|  | ||||
|         return START_NOT_STICKY; | ||||
|     } | ||||
|  | ||||
|     private Notification createNotification(int stringResId) { | ||||
|         return new NotificationCompat.Builder(this, NotificationUtils.CHANNEL_POST_MEDIA) | ||||
|                 .setContentTitle(getString(stringResId)) | ||||
|                 .setContentText(getString(R.string.please_wait)) | ||||
|                 .setSmallIcon(R.mipmap.ic_launcher_round) | ||||
|                 .build(); | ||||
|     } | ||||
|  | ||||
|     private void submitImagePost(Uri imageUri, String subredditName, String title, String flair, | ||||
|                                  boolean isSpoiler, boolean isNSFW) { | ||||
|         Glide.with(this) | ||||
|                 .asBitmap() | ||||
|                 .load(imageUri) | ||||
|                 .into(new CustomTarget<Bitmap>() { | ||||
|  | ||||
|                     @Override | ||||
|                     public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { | ||||
|                         SubmitPost.submitImagePost(mOauthRetrofit, mUploadMediaRetrofit, sharedPreferences, | ||||
|                                 getResources().getConfiguration().locale, subredditName, title, resource, | ||||
|                                 flair, isSpoiler, isNSFW, new SubmitPost.SubmitPostListener() { | ||||
|                                     @Override | ||||
|                                     public void submitSuccessful(Post post) { | ||||
|                                         EventBus.getDefault().post(new SubmitImagePostEvent(true, null)); | ||||
|                                         Toast.makeText(PostMediaService.this, R.string.image_is_processing, Toast.LENGTH_SHORT).show(); | ||||
|  | ||||
|                                         stopForeground(true); | ||||
|                                         stopSelf(); | ||||
|                                     } | ||||
|  | ||||
|                                     @Override | ||||
|                                     public void submitFailed(@Nullable String errorMessage) { | ||||
|                                         EventBus.getDefault().post(new SubmitImagePostEvent(false, errorMessage)); | ||||
|  | ||||
|                                         stopForeground(true); | ||||
|                                         stopSelf(); | ||||
|                                     } | ||||
|                                 }); | ||||
|                     } | ||||
|  | ||||
|                     @Override | ||||
|                     public void onLoadCleared(@Nullable Drawable placeholder) { | ||||
|  | ||||
|                     } | ||||
|                 }); | ||||
|     } | ||||
|  | ||||
|     private void submitVideoPost(Uri videoUri, String subredditName, String title, String flair, | ||||
|                                  boolean isSpoiler, boolean isNSFW) { | ||||
|         try (ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(videoUri, "r")) { | ||||
|             FileInputStream in = new FileInputStream(pfd.getFileDescriptor()); | ||||
|             byte[] buffer; | ||||
|             buffer = new byte[in.available()]; | ||||
|             while (in.read(buffer) != -1); | ||||
|  | ||||
|             Glide.with(this) | ||||
|                     .asBitmap() | ||||
|                     .load(videoUri) | ||||
|                     .into(new CustomTarget<Bitmap>() { | ||||
|                         @Override | ||||
|                         public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { | ||||
|                             SubmitPost.submitVideoPost(mOauthRetrofit, mUploadMediaRetrofit, mUploadVideoRetrofit, | ||||
|                                     sharedPreferences, getResources().getConfiguration().locale, subredditName, title, | ||||
|                                     buffer, getContentResolver().getType(videoUri), resource, flair, isSpoiler, isNSFW, | ||||
|                                     new SubmitPost.SubmitPostListener() { | ||||
|                                         @Override | ||||
|                                         public void submitSuccessful(Post post) { | ||||
|                                             EventBus.getDefault().post(new SubmitVideoPostEvent(true, false, null)); | ||||
|                                             Toast.makeText(PostMediaService.this, R.string.video_is_processing, Toast.LENGTH_SHORT).show(); | ||||
|  | ||||
|                                             stopForeground(true); | ||||
|                                             stopSelf(); | ||||
|                                         } | ||||
|  | ||||
|                                         @Override | ||||
|                                         public void submitFailed(@Nullable String errorMessage) { | ||||
|                                             EventBus.getDefault().post(new SubmitVideoPostEvent(false, false, errorMessage)); | ||||
|  | ||||
|                                             stopForeground(true); | ||||
|                                             stopSelf(); | ||||
|                                         } | ||||
|                                     }); | ||||
|                         } | ||||
|  | ||||
|                         @Override | ||||
|                         public void onLoadCleared(@Nullable Drawable placeholder) { | ||||
|  | ||||
|                         } | ||||
|                     }); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|             EventBus.getDefault().post(new SubmitVideoPostEvent(false, true, null)); | ||||
|  | ||||
|             stopForeground(true); | ||||
|             stopSelf(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -2,11 +2,9 @@ package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.graphics.Bitmap; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.ParcelFileDescriptor; | ||||
| import android.provider.MediaStore; | ||||
| import android.view.Menu; | ||||
| import android.view.MenuItem; | ||||
| @@ -14,7 +12,6 @@ import android.view.View; | ||||
| import android.widget.Button; | ||||
| import android.widget.EditText; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
| import android.widget.VideoView; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| @@ -27,15 +24,12 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout; | ||||
| import com.bumptech.glide.Glide; | ||||
| import com.bumptech.glide.RequestManager; | ||||
| import com.bumptech.glide.request.RequestOptions; | ||||
| import com.bumptech.glide.request.target.CustomTarget; | ||||
| import com.bumptech.glide.request.transition.Transition; | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton; | ||||
| import com.google.android.material.snackbar.Snackbar; | ||||
| import com.libRG.CustomTextView; | ||||
|  | ||||
| import java.io.FileInputStream; | ||||
| import java.io.IOException; | ||||
| import java.util.Locale; | ||||
| import org.greenrobot.eventbus.EventBus; | ||||
| import org.greenrobot.eventbus.Subscribe; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| import javax.inject.Named; | ||||
| @@ -57,6 +51,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|     private static final String SUBREDDIT_IS_USER_STATE = "SIUS"; | ||||
|     private static final String VIDEO_URI_STATE = "IUS"; | ||||
|     private static final String LOAD_SUBREDDIT_ICON_STATE = "LSIS"; | ||||
|     private static final String IS_POSTING_STATE = "IPS"; | ||||
|     private static final String FLAIR_STATE = "FS"; | ||||
|     private static final String IS_SPOILER_STATE = "ISS"; | ||||
|     private static final String IS_NSFW_STATE = "INS"; | ||||
| @@ -86,14 +81,16 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|     private boolean subredditIsUser; | ||||
|     private Uri videoUri; | ||||
|     private boolean loadSubredditIconSuccessful = true; | ||||
|     private boolean isPosting; | ||||
|  | ||||
|     private String flair = null; | ||||
|     private boolean isSpoiler = false; | ||||
|     private boolean isNSFW = false; | ||||
|  | ||||
|     private Menu mMemu; | ||||
|     private RequestManager mGlide; | ||||
|     private Locale mLocale; | ||||
|     private FlairBottomSheetFragment flairSelectionBottomSheetFragment; | ||||
|     private FlairBottomSheetFragment mFlairSelectionBottomSheetFragment; | ||||
|     private Snackbar mPostingSnackbar; | ||||
|  | ||||
|     @Inject | ||||
|     @Named("no_oauth") | ||||
| @@ -126,13 +123,14 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|  | ||||
|         ButterKnife.bind(this); | ||||
|  | ||||
|         EventBus.getDefault().register(this); | ||||
|  | ||||
|         ((Infinity) getApplication()).getmAppComponent().inject(this); | ||||
|  | ||||
|         setSupportActionBar(toolbar); | ||||
|         getSupportActionBar().setDisplayHomeAsUpEnabled(true); | ||||
|  | ||||
|         mGlide = Glide.with(this); | ||||
|         mLocale = getResources().getConfiguration().locale; | ||||
|  | ||||
|         if(savedInstanceState != null) { | ||||
|             subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE); | ||||
| @@ -140,13 +138,14 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|             subredditSelected = savedInstanceState.getBoolean(SUBREDDIT_SELECTED_STATE); | ||||
|             subredditIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE); | ||||
|             loadSubredditIconSuccessful = savedInstanceState.getBoolean(LOAD_SUBREDDIT_ICON_STATE); | ||||
|             isPosting = savedInstanceState.getBoolean(IS_POSTING_STATE); | ||||
|             flair = savedInstanceState.getString(FLAIR_STATE); | ||||
|             isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE); | ||||
|             isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE); | ||||
|  | ||||
|             if(savedInstanceState.getString(VIDEO_URI_STATE) != null) { | ||||
|                 videoUri = Uri.parse(savedInstanceState.getString(VIDEO_URI_STATE)); | ||||
|                 loadImage(); | ||||
|                 loadVideo(); | ||||
|             } | ||||
|  | ||||
|             if(subredditName != null) { | ||||
| @@ -158,6 +157,11 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|             } | ||||
|             displaySubredditIcon(); | ||||
|  | ||||
|             if(isPosting) { | ||||
|                 mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 mPostingSnackbar.show(); | ||||
|             } | ||||
|  | ||||
|             if(flair != null) { | ||||
|                 flairTextView.setText(flair); | ||||
|                 flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark)); | ||||
| @@ -169,6 +173,8 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|                 nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent)); | ||||
|             } | ||||
|         } else { | ||||
|             isPosting = false; | ||||
|  | ||||
|             if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) { | ||||
|                 subredditName = getIntent().getExtras().getString(EXTRA_SUBREDDIT_NAME); | ||||
|                 subreditNameTextView.setText(subredditName); | ||||
| @@ -206,11 +212,11 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|  | ||||
|         flairTextView.setOnClickListener(view -> { | ||||
|             if(flair == null) { | ||||
|                 flairSelectionBottomSheetFragment = new FlairBottomSheetFragment(); | ||||
|                 mFlairSelectionBottomSheetFragment = new FlairBottomSheetFragment(); | ||||
|                 Bundle bundle = new Bundle(); | ||||
|                 bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, subredditName); | ||||
|                 flairSelectionBottomSheetFragment.setArguments(bundle); | ||||
|                 flairSelectionBottomSheetFragment.show(getSupportFragmentManager(), flairSelectionBottomSheetFragment.getTag()); | ||||
|                 mFlairSelectionBottomSheetFragment.setArguments(bundle); | ||||
|                 mFlairSelectionBottomSheetFragment.show(getSupportFragmentManager(), mFlairSelectionBottomSheetFragment.getTag()); | ||||
|             } else { | ||||
|                 flairTextView.setBackgroundColor(getResources().getColor(android.R.color.transparent)); | ||||
|                 flairTextView.setText(getString(R.string.flair)); | ||||
| @@ -266,7 +272,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     private void loadImage() { | ||||
|     private void loadVideo() { | ||||
|         constraintLayout.setVisibility(View.GONE); | ||||
|         videoView.setVisibility(View.VISIBLE); | ||||
|         selectAgainTextView.setVisibility(View.VISIBLE); | ||||
| @@ -299,7 +305,12 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|  | ||||
|     @Override | ||||
|     public boolean onCreateOptionsMenu(Menu menu) { | ||||
|         getMenuInflater().inflate(R.menu.post_image_activity, menu); | ||||
|         getMenuInflater().inflate(R.menu.post_video_activity, menu); | ||||
|         mMemu = menu; | ||||
|         if(isPosting) { | ||||
|             mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(false); | ||||
|             mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(130); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| @@ -309,7 +320,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|             case android.R.id.home: | ||||
|                 finish(); | ||||
|                 return true; | ||||
|             case R.id.action_send_post_image_activity: | ||||
|             case R.id.action_send_post_video_activity: | ||||
|                 if(!subredditSelected) { | ||||
|                     Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show(); | ||||
|                     return true; | ||||
| @@ -320,10 +331,12 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|                     return true; | ||||
|                 } | ||||
|  | ||||
|                 isPosting = true; | ||||
|  | ||||
|                 item.setEnabled(false); | ||||
|                 item.getIcon().setAlpha(130); | ||||
|                 Snackbar postingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 postingSnackbar.show(); | ||||
|                 mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE); | ||||
|                 mPostingSnackbar.show(); | ||||
|  | ||||
|                 String subredditName; | ||||
|                 if(subredditIsUser) { | ||||
| @@ -332,55 +345,21 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|                     subredditName = subreditNameTextView.getText().toString(); | ||||
|                 } | ||||
|  | ||||
|                 try (ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(videoUri, "r")) { | ||||
|                     FileInputStream in = new FileInputStream(pfd.getFileDescriptor()); | ||||
|                     byte[] buffer; | ||||
|                     buffer = new byte[in.available()]; | ||||
|                     while (in.read(buffer) != -1); | ||||
|                 Intent intent = new Intent(this, PostMediaService.class); | ||||
|                 intent.setData(videoUri); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_SUBREDDIT_NAME, subredditName); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_TITLE, titleEditText.getText().toString()); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_FLAIR, flair); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_IS_SPOILER, isSpoiler); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_IS_NSFW, isNSFW); | ||||
|                 intent.putExtra(PostMediaService.EXTRA_POST_TYPE, PostMediaService.EXTRA_POST_TYPE_VIDEO); | ||||
|  | ||||
|                     Glide.with(this) | ||||
|                             .asBitmap() | ||||
|                             .load(videoUri) | ||||
|                             .into(new CustomTarget<Bitmap>() { | ||||
|                                       @Override | ||||
|                                       public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { | ||||
|                                           SubmitPost.submitVideoPost(mOauthRetrofit, mUploadMediaRetrofit, mUploadVideoRetrofit, | ||||
|                                                   sharedPreferences, mLocale, subredditName, titleEditText.getText().toString(), | ||||
|                                                   buffer, getContentResolver().getType(videoUri), resource, flair, isSpoiler, isNSFW, | ||||
|                                                   new SubmitPost.SubmitPostListener() { | ||||
|                                                       @Override | ||||
|                                                       public void submitSuccessful(Post post) { | ||||
|                                                           Toast.makeText(PostVideoActivity.this, R.string.video_is_processing, Toast.LENGTH_SHORT).show(); | ||||
|                                                           Intent intent = new Intent(PostVideoActivity.this, ViewUserDetailActivity.class); | ||||
|                                                           intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, | ||||
|                                                                   mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, "")); | ||||
|                                                           startActivity(intent); | ||||
|                                                           finish(); | ||||
|                                                       } | ||||
|  | ||||
|                                                       @Override | ||||
|                                                       public void submitFailed(@Nullable String errorMessage) { | ||||
|                                                           postingSnackbar.dismiss(); | ||||
|                                                           item.setEnabled(true); | ||||
|                                                           item.getIcon().setAlpha(255); | ||||
|                                                           if (errorMessage == null || errorMessage.equals("")) { | ||||
|                                                               Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); | ||||
|                                                           } else { | ||||
|                                                               Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_SHORT).show(); | ||||
|                                                           } | ||||
|                                                       } | ||||
|                                                   }); | ||||
|                                       } | ||||
|  | ||||
|                                       @Override | ||||
|                                       public void onLoadCleared(@Nullable Drawable placeholder) { | ||||
|  | ||||
|                                       } | ||||
|                                   }); | ||||
|                 } catch (IOException e) { | ||||
|                     e.printStackTrace(); | ||||
|                     Snackbar.make(coordinatorLayout, R.string.error_processing_video, Snackbar.LENGTH_SHORT).show(); | ||||
|                 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|                     startForegroundService(intent); | ||||
|                 } else { | ||||
|                     startService(intent); | ||||
|                 } | ||||
|  | ||||
|                 return true; | ||||
|         } | ||||
|  | ||||
| @@ -404,6 +383,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|             outState.putString(VIDEO_URI_STATE, videoUri.toString()); | ||||
|         } | ||||
|         outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful); | ||||
|         outState.putBoolean(IS_POSTING_STATE, isPosting); | ||||
|         outState.putString(FLAIR_STATE, flair); | ||||
|         outState.putBoolean(IS_SPOILER_STATE, isSpoiler); | ||||
|         outState.putBoolean(IS_NSFW_STATE, isNSFW); | ||||
| @@ -436,19 +416,48 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS | ||||
|                 } | ||||
|  | ||||
|                 videoUri = data.getData(); | ||||
|                 loadImage(); | ||||
|                 loadVideo(); | ||||
|             } | ||||
|         } else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) { | ||||
|             videoUri = data.getData(); | ||||
|             loadImage(); | ||||
|             loadVideo(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void onDestroy() { | ||||
|         EventBus.getDefault().unregister(this); | ||||
|         super.onDestroy(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void flairSelected(String flair) { | ||||
|         this.flair = flair; | ||||
|         flairTextView.setText(flair); | ||||
|         flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark)); | ||||
|         flairSelectionBottomSheetFragment.dismiss(); | ||||
|         mFlairSelectionBottomSheetFragment.dismiss(); | ||||
|     } | ||||
|  | ||||
|     @Subscribe | ||||
|     public void onSubmitVideoPostEvent(SubmitVideoPostEvent submitVideoPostEvent) { | ||||
|         isPosting = false; | ||||
|         if(submitVideoPostEvent.postSuccess) { | ||||
|             Intent intent = new Intent(this, ViewUserDetailActivity.class); | ||||
|             intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, | ||||
|                     mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, "")); | ||||
|             startActivity(intent); | ||||
|             finish(); | ||||
|         } else if(submitVideoPostEvent.errorProcessingVideo) { | ||||
|             Snackbar.make(coordinatorLayout, R.string.error_processing_video, Snackbar.LENGTH_SHORT).show(); | ||||
|         } else { | ||||
|             mPostingSnackbar.dismiss(); | ||||
|             mMemu.getItem(R.id.action_send_post_video_activity).setEnabled(true); | ||||
|             mMemu.getItem(R.id.action_send_post_video_activity).getIcon().setAlpha(255); | ||||
|             if (submitVideoPostEvent.errorMessage == null || submitVideoPostEvent.errorMessage.equals("")) { | ||||
|                 Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); | ||||
|             } else { | ||||
|                 Snackbar.make(coordinatorLayout, submitVideoPostEvent.errorMessage, Snackbar.LENGTH_SHORT).show(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,11 @@ | ||||
| package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| public class SubmitImagePostEvent { | ||||
|     public boolean postSuccess; | ||||
|     public String errorMessage; | ||||
|  | ||||
|     public SubmitImagePostEvent(boolean postSuccess, String errorMessage) { | ||||
|         this.postSuccess = postSuccess; | ||||
|         this.errorMessage = errorMessage; | ||||
|     } | ||||
| } | ||||
| @@ -83,7 +83,6 @@ class SubmitPost { | ||||
|         uploadImageParams.put(RedditUtils.FILEPATH_KEY, "post_video." + fileType); | ||||
|         uploadImageParams.put(RedditUtils.MIMETYPE_KEY, mimeType); | ||||
|  | ||||
|         Log.i("map", RedditUtils.getOAuthHeader(accessToken).toString()); | ||||
|         Call<String> uploadImageCall = api.uploadImage(RedditUtils.getOAuthHeader(accessToken), uploadImageParams); | ||||
|         uploadImageCall.enqueue(new Callback<String>() { | ||||
|             @Override | ||||
|   | ||||
| @@ -0,0 +1,13 @@ | ||||
| package ml.docilealligator.infinityforreddit; | ||||
|  | ||||
| public class SubmitVideoPostEvent { | ||||
|     public boolean postSuccess; | ||||
|     public boolean errorProcessingVideo; | ||||
|     public String errorMessage; | ||||
|  | ||||
|     public SubmitVideoPostEvent(boolean postSuccess, boolean errorProcessingVideo, String errorMessage) { | ||||
|         this.postSuccess = postSuccess; | ||||
|         this.errorProcessingVideo = errorProcessingVideo; | ||||
|         this.errorMessage = errorMessage; | ||||
|     } | ||||
| } | ||||
| @@ -63,7 +63,6 @@ public class ViewUserDetailActivity extends AppCompatActivity { | ||||
|  | ||||
|     private SectionsPagerAdapter sectionsPagerAdapter; | ||||
|  | ||||
|     private Fragment mFragment; | ||||
|     private SubscribedUserDao subscribedUserDao; | ||||
|     private RequestManager glide; | ||||
|     private UserViewModel userViewModel; | ||||
| @@ -330,15 +329,12 @@ public class ViewUserDetailActivity extends AppCompatActivity { | ||||
|                 intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_IS_USER, true); | ||||
|                 intent.putExtra(SearchActivity.EXTRA_SEARCH_ONLY_SUBREDDITS, false); | ||||
|                 startActivity(intent); | ||||
|                 break; | ||||
|                 return true; | ||||
|             case R.id.action_refresh_view_user_detail_activity: | ||||
|                 if (mFragment instanceof FragmentCommunicator) { | ||||
|                     ((FragmentCommunicator) mFragment).refresh(); | ||||
|                     return true; | ||||
|                 } | ||||
|                 break; | ||||
|                 sectionsPagerAdapter.refresh(); | ||||
|                 return true; | ||||
|             case R.id.action_lazy_mode_view_user_detail_activity: | ||||
|                 MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity); | ||||
|                 /*MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity); | ||||
|                 if(isInLazyMode) { | ||||
|                     isInLazyMode = false; | ||||
|                     ((FragmentCommunicator) mFragment).stopLazyMode(); | ||||
| @@ -354,7 +350,7 @@ public class ViewUserDetailActivity extends AppCompatActivity { | ||||
|                     params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); | ||||
|                     collapsingToolbarLayout.setLayoutParams(params); | ||||
|                 } | ||||
|                 return true; | ||||
|                 return true;*/ | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| @@ -484,11 +480,10 @@ public class ViewUserDetailActivity extends AppCompatActivity { | ||||
|         } | ||||
|  | ||||
|         public void refresh() { | ||||
|             if(postFragment != null) { | ||||
|                 ((FragmentCommunicator) postFragment).refresh(); | ||||
|             } | ||||
|             if(commentsListingFragment != null) { | ||||
|                 ((FragmentCommunicator) commentsListingFragment).refresh(); | ||||
|             if(viewPager.getCurrentItem() == 0) { | ||||
|                 postFragment.refresh(); | ||||
|             } else { | ||||
|                 commentsListingFragment.refresh(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -160,4 +160,8 @@ | ||||
|     <string name="gif">GIF</string> | ||||
|     <string name="best">Best</string> | ||||
|     <string name="search">Search</string> | ||||
|  | ||||
|     <string name="posting_video">Posting video</string> | ||||
|     <string name="posting_image">Posting image</string> | ||||
|     <string name="please_wait">Please wait.</string> | ||||
| </resources> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user