mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 20:57:25 +01:00
Start adding submitting gallery posts support.
This commit is contained in:
parent
c30dcf415d
commit
c5e82955bc
@ -18,7 +18,8 @@
|
||||
android:maxSdkVersion="22" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
<uses-permission-sdk-23
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="28" />
|
||||
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
@ -33,7 +34,9 @@
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:label">
|
||||
<activity android:name=".activities.RPANActivity"
|
||||
<activity android:name=".activities.PostGalleryActivity"></activity>
|
||||
<activity
|
||||
android:name=".activities.RPANActivity"
|
||||
android:configChanges="orientation|screenSize|layoutDirection"
|
||||
android:label="@string/rpan_activity_label"
|
||||
android:parentActivityName=".activities.MainActivity"
|
||||
|
@ -0,0 +1,56 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RedditGalleryPayload {
|
||||
@SerializedName("sr")
|
||||
public String subredditName;
|
||||
@SerializedName("submit_type")
|
||||
public String submitType;
|
||||
@SerializedName("api_type")
|
||||
public String apiType = "json";
|
||||
@SerializedName("show_error_list")
|
||||
public boolean showErrorList = true;
|
||||
public String title;
|
||||
@SerializedName("spoiler")
|
||||
public boolean isSpoiler;
|
||||
@SerializedName("nsfw")
|
||||
public boolean isNSFW;
|
||||
public String kind = "self";
|
||||
@SerializedName("original_content")
|
||||
public boolean originalContent = false;
|
||||
@SerializedName("post_to_twitter")
|
||||
public boolean postToTwitter = false;
|
||||
public boolean sendReplies;
|
||||
@SerializedName("validate_on_submit")
|
||||
public boolean validateOnSubmit = true;
|
||||
public List<Item> items;
|
||||
|
||||
public RedditGalleryPayload(String subredditName, String submitType, String kind, String title,
|
||||
boolean isSpoiler, boolean isNSFW, boolean sendReplies, List<Item> items) {
|
||||
this.subredditName = subredditName;
|
||||
this.submitType = submitType;
|
||||
this.title = title;
|
||||
this.isSpoiler = isSpoiler;
|
||||
this.isNSFW = isNSFW;
|
||||
this.kind = kind;
|
||||
this.sendReplies = sendReplies;
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
public class Item {
|
||||
public String caption;
|
||||
@SerializedName("outbound_url")
|
||||
public String outboundUrl;
|
||||
@SerializedName("media_id")
|
||||
public String mediaId;
|
||||
|
||||
public Item(String caption, String outboundUrl, String mediaId) {
|
||||
this.caption = caption;
|
||||
this.outboundUrl = outboundUrl;
|
||||
this.mediaId = mediaId;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,163 @@
|
||||
package ml.docilealligator.infinityforreddit.activities;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial;
|
||||
import com.libRG.CustomTextView;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import ml.docilealligator.infinityforreddit.Flair;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.FlairBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import pl.droidsonroids.gif.GifImageView;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class PostGalleryActivity extends BaseActivity implements FlairBottomSheetFragment.FlairSelectionCallback {
|
||||
|
||||
static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
||||
|
||||
private static final String SUBREDDIT_NAME_STATE = "SNS";
|
||||
private static final String SUBREDDIT_ICON_STATE = "SIS";
|
||||
private static final String SUBREDDIT_SELECTED_STATE = "SSS";
|
||||
private static final String SUBREDDIT_IS_USER_STATE = "SIUS";
|
||||
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";
|
||||
|
||||
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_gallery_activity)
|
||||
CoordinatorLayout coordinatorLayout;
|
||||
@BindView(R.id.appbar_layout_post_gallery_activity)
|
||||
AppBarLayout appBarLayout;
|
||||
@BindView(R.id.toolbar_post_gallery_activity)
|
||||
Toolbar toolbar;
|
||||
@BindView(R.id.subreddit_icon_gif_image_view_post_gallery_activity)
|
||||
GifImageView iconGifImageView;
|
||||
@BindView(R.id.subreddit_name_text_view_post_gallery_activity)
|
||||
TextView subredditNameTextView;
|
||||
@BindView(R.id.rules_button_post_gallery_activity)
|
||||
MaterialButton rulesButton;
|
||||
@BindView(R.id.divider_1_post_gallery_activity)
|
||||
View divider1;
|
||||
@BindView(R.id.flair_custom_text_view_post_gallery_activity)
|
||||
CustomTextView flairTextView;
|
||||
@BindView(R.id.spoiler_custom_text_view_post_gallery_activity)
|
||||
CustomTextView spoilerTextView;
|
||||
@BindView(R.id.nsfw_custom_text_view_post_gallery_activity)
|
||||
CustomTextView nsfwTextView;
|
||||
@BindView(R.id.divider_2_post_gallery_activity)
|
||||
View divider2;
|
||||
@BindView(R.id.receive_post_reply_notifications_linear_layout_post_gallery_activity)
|
||||
LinearLayout receivePostReplyNotificationsLinearLayout;
|
||||
@BindView(R.id.receive_post_reply_notifications_text_view_post_gallery_activity)
|
||||
TextView receivePostReplyNotificationsTextView;
|
||||
@BindView(R.id.receive_post_reply_notifications_switch_material_post_gallery_activity)
|
||||
SwitchMaterial receivePostReplyNotificationsSwitchMaterial;
|
||||
@BindView(R.id.divider_3_post_gallery_activity)
|
||||
View divider3;
|
||||
@BindView(R.id.post_title_edit_text_post_gallery_activity)
|
||||
EditText titleEditText;
|
||||
@BindView(R.id.divider_4_post_gallery_activity)
|
||||
View divider4;
|
||||
@BindView(R.id.images_recycler_view_post_gallery_activity)
|
||||
RecyclerView imagesRecyclerView;
|
||||
@Inject
|
||||
@Named("no_oauth")
|
||||
Retrofit mRetrofit;
|
||||
@Inject
|
||||
@Named("oauth")
|
||||
Retrofit mOauthRetrofit;
|
||||
@Inject
|
||||
@Named("upload_media")
|
||||
Retrofit mUploadMediaRetrofit;
|
||||
@Inject
|
||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
@Inject
|
||||
@Named("default")
|
||||
SharedPreferences mSharedPreferences;
|
||||
@Inject
|
||||
@Named("current_account")
|
||||
SharedPreferences mCurrentAccountSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
@Inject
|
||||
Executor mExecutor;
|
||||
private String mAccessToken;
|
||||
private String mAccountName;
|
||||
private String iconUrl;
|
||||
private String subredditName;
|
||||
private boolean subredditSelected = false;
|
||||
private boolean subredditIsUser;
|
||||
private boolean loadSubredditIconSuccessful = true;
|
||||
private boolean isPosting;
|
||||
private Uri imageUri;
|
||||
private int primaryTextColor;
|
||||
private int flairBackgroundColor;
|
||||
private int flairTextColor;
|
||||
private int spoilerBackgroundColor;
|
||||
private int spoilerTextColor;
|
||||
private int nsfwBackgroundColor;
|
||||
private int nsfwTextColor;
|
||||
private Flair flair;
|
||||
private boolean isSpoiler = false;
|
||||
private boolean isNSFW = false;
|
||||
private Resources resources;
|
||||
private Menu mMemu;
|
||||
private RequestManager mGlide;
|
||||
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
||||
private Snackbar mPostingSnackbar;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_post_gallery);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SharedPreferences getDefaultSharedPreferences() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CustomThemeWrapper getCustomThemeWrapper() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void applyCustomTheme() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flairSelected(Flair flair) {
|
||||
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import java.util.Map;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.DELETE;
|
||||
import retrofit2.http.FieldMap;
|
||||
import retrofit2.http.FormUrlEncoded;
|
||||
@ -356,4 +357,7 @@ public interface RedditAPI {
|
||||
@GET("/api/subreddit_autocomplete_v2?typeahead_active=true&include_profiles=false&raw_json=1")
|
||||
Call<String> subredditAutocomplete(@HeaderMap Map<String ,String> headers, @Query("query") String query,
|
||||
@Query("include_over_18") boolean nsfw);
|
||||
|
||||
@POST("/api/submit_gallery_post.json?resubmit=true&raw_json=1")
|
||||
Call<String> submitGalleryPost(@HeaderMap Map<String, String> headers, @Body String body);
|
||||
}
|
||||
|
199
app/src/main/res/layout/activity_post_gallery.xml
Normal file
199
app/src/main/res/layout/activity_post_gallery.xml
Normal file
@ -0,0 +1,199 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/coordinator_layout_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:application=".PostImageActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar_layout_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
app:navigationIcon="?attr/homeAsUpIndicator"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
<pl.droidsonroids.gif.GifImageView
|
||||
android:id="@+id/subreddit_icon_gif_image_view_post_gallery_activity"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subreddit_name_text_view_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_toStartOf="@id/rules_button_post_gallery_activity"
|
||||
android:layout_toEndOf="@id/subreddit_icon_gif_image_view_post_gallery_activity"
|
||||
android:text="@string/choose_a_subreddit"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/rules_button_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/rules"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_1_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/flair_custom_text_view_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:padding="4dp"
|
||||
android:text="@string/flair"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:visibility="gone"
|
||||
app:lib_setRadius="3dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/spoiler_custom_text_view_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:padding="4dp"
|
||||
android:text="@string/spoiler"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:lib_setRadius="3dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/nsfw_custom_text_view_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:padding="4dp"
|
||||
android:text="@string/nsfw"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:lib_setRadius="3dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_2_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/receive_post_reply_notifications_linear_layout_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/receive_post_reply_notifications_text_view_post_gallery_activity"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/receive_post_reply_notifications"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/receive_post_reply_notifications_switch_material_post_gallery_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:checked="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_3_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/post_title_edit_text_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#00000000"
|
||||
android:gravity="top"
|
||||
android:hint="@string/post_title_hint"
|
||||
android:inputType="textCapSentences|textMultiLine"
|
||||
android:padding="16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/title_font_18"
|
||||
android:fontFamily="?attr/title_font_family" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_4_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/images_recycler_view_post_gallery_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
Loading…
Reference in New Issue
Block a user