diff options
author | Alex Ning <chineseperson5@gmail.com> | 2019-07-24 10:51:57 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2019-07-24 10:51:57 +0000 |
commit | 469542fb683a983824cf7f4b75f29a69b9d6307f (patch) | |
tree | 2524ddd5d670001592aa52c68371c38bd905abe2 /app/src/main/java | |
parent | fcff7784c9e7128d2226e5011dc5709772f97384 (diff) | |
download | infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar.gz infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar.bz2 infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar.lz infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar.xz infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.tar.zst infinity-for-reddit-469542fb683a983824cf7f4b75f29a69b9d6307f.zip |
Capture images and videos from camera when click capture fab in PostImageActivity and PostVideoActivity. Go to user's profile after sending image post.
Diffstat (limited to 'app/src/main/java')
4 files changed, 46 insertions, 21 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java index acda274a..cef80dc5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java @@ -68,9 +68,11 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData> initialParams = params; initialCallback = callback; + initialLoadStateLiveData.postValue(NetworkState.LOADING); + RedditAPI api = retrofit.create(RedditAPI.class); - Call<String> bestPost = api.getUserComments(username, null); - bestPost.enqueue(new Callback<String>() { + Call<String> commentsCall = api.getUserComments(username, null); + commentsCall.enqueue(new Callback<String>() { @Override public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) { if(response.isSuccessful()) { @@ -117,6 +119,8 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData> this.params = params; this.callback = callback; + paginationNetworkStateLiveData.postValue(NetworkState.LOADING); + RedditAPI api = retrofit.create(RedditAPI.class); Call<String> bestPost = api.getUserComments(username, params.key); bestPost.enqueue(new Callback<String>() { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java index 5371d220..fbe4a7a6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java @@ -113,7 +113,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni mProgressBar.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { mFetchCommentInfoLinearLayout.setOnClickListener(view -> mCommentViewModel.retry()); - showErrorView(R.string.load_posts_error); + showErrorView(R.string.load_comments_failed); } else { mFetchCommentInfoLinearLayout.setVisibility(View.GONE); mProgressBar.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java index 6e71c523..4aec1ddc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java @@ -6,6 +6,8 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -13,6 +15,7 @@ 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; @@ -20,6 +23,7 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.content.FileProvider; import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; @@ -30,7 +34,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import com.libRG.CustomTextView; -import java.util.ArrayList; +import java.io.File; +import java.io.IOException; import java.util.Locale; import javax.inject.Inject; @@ -61,6 +66,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0; private static final int PICK_IMAGE_REQUEST_CODE = 1; + private static final int CAPTURE_IMAGE_REQUEST_CODE = 2; @BindView(R.id.coordinator_layout_post_image_activity) CoordinatorLayout coordinatorLayout; @BindView(R.id.subreddit_icon_gif_image_view_post_image_activity) GifImageView iconGifImageView; @@ -228,7 +234,19 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS }); captureFab.setOnClickListener(view -> { - + Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + if(pictureIntent.resolveActivity(getPackageManager()) != null) { + try { + imageUri = FileProvider.getUriForFile(this, "ml.docilealligator.infinityforreddit.provider", + File.createTempFile("temp_img", ".jpg", getExternalFilesDir(Environment.DIRECTORY_PICTURES))); + pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); + startActivityForResult(pictureIntent, CAPTURE_IMAGE_REQUEST_CODE); + } catch (IOException ex) { + Snackbar.make(coordinatorLayout, R.string.error_creating_temp_file, Snackbar.LENGTH_SHORT).show(); + } + } else { + Snackbar.make(coordinatorLayout, R.string.no_camera_available, Snackbar.LENGTH_SHORT).show(); + } }); selectFromLibraryFab.setOnClickListener(view -> { @@ -330,21 +348,12 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS @Override public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { if(response.isSuccessful()) { - ParsePost.parsePosts(response.body(), mLocale, 1, - new ParsePost.ParsePostsListingListener() { - @Override - public void onParsePostsListingSuccess(ArrayList<Post> newPostData, String lastItem) { - Intent intent = new Intent(PostImageActivity.this, ViewPostDetailActivity.class); - intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, newPostData.get(0)); - startActivity(intent); - finish(); - } - - @Override - public void onParsePostsListingFail() { - startViewUserDetailActivity(); - } - }); + 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(); } @@ -435,6 +444,10 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS imageUri = data.getData(); loadImage(); } + } else if(requestCode == CAPTURE_IMAGE_REQUEST_CODE) { + if(resultCode == RESULT_OK) { + loadImage(); + } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java index e4ccbfe1..b4c266eb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java @@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.ParcelFileDescriptor; +import android.provider.MediaStore; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -62,6 +63,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0; private static final int PICK_VIDEO_REQUEST_CODE = 1; + private static final int CAPTURE_VIDEO_REQUEST_CODE = 2; @BindView(R.id.coordinator_layout_post_video_activity) CoordinatorLayout coordinatorLayout; @BindView(R.id.subreddit_icon_gif_image_view_post_video_activity) GifImageView iconGifImageView; @@ -233,7 +235,10 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS }); captureFab.setOnClickListener(view -> { - + Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); + if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { + startActivityForResult(takeVideoIntent, CAPTURE_VIDEO_REQUEST_CODE); + } }); selectFromLibraryFab.setOnClickListener(view -> { @@ -416,6 +421,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS videoUri = data.getData(); loadImage(); } + } else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) { + videoUri = data.getData(); + loadImage(); } } |