diff --git a/app/src/main/java/app/fedilab/android/activities/BasePixelfedComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/BasePixelfedComposeActivity.java index 6c4182a3d..30c9d85d4 100644 --- a/app/src/main/java/app/fedilab/android/activities/BasePixelfedComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BasePixelfedComposeActivity.java @@ -543,7 +543,7 @@ public abstract class BasePixelfedComposeActivity extends BaseActivity implement int maxUploadRetryTimes = sharedpreferences.getInt(Helper.MAX_UPLOAD_IMG_RETRY_TIMES, 3); String url = scheme + "://" + Helper.getLiveInstance(activity) + "/api/pixelfed/v1/media"; if (pixelfedStory) { - url = scheme + "://" + Helper.getLiveInstance(activity) + "/api/pixelfed/stories/v1/add"; + url = scheme + "://" + Helper.getLiveInstance(activity) + "/api/stories/v0/add"; } UploadNotificationConfig uploadConfig = new UploadNotificationConfig(); uploadConfig @@ -558,9 +558,7 @@ public abstract class BasePixelfedComposeActivity extends BaseActivity implement request.addHeader("x-csrf-token", tokens[1].replace("X-CSRF-TOKEN= ", "")); request.setNotificationConfig(uploadConfig); request.addFileToUpload(uri.toString().replace("file://", ""), "file"); - if (!pixelfedStory) { - request.addParameter("filename", fileName).setMaxRetries(maxUploadRetryTimes); - } + request.addParameter("filename", fileName).setMaxRetries(maxUploadRetryTimes); request.startUpload(); } catch (MalformedURLException | FileNotFoundException e) { e.printStackTrace(); diff --git a/app/src/main/java/app/fedilab/android/client/PixelfedAPI.java b/app/src/main/java/app/fedilab/android/client/PixelfedAPI.java index 0445b204a..dd5857a59 100644 --- a/app/src/main/java/app/fedilab/android/client/PixelfedAPI.java +++ b/app/src/main/java/app/fedilab/android/client/PixelfedAPI.java @@ -3,6 +3,7 @@ package app.fedilab.android.client; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; +import android.util.Log; import com.google.gson.JsonArray; @@ -224,6 +225,25 @@ public class PixelfedAPI { return apiResponse; } + + /** + * Delete a media in story + * + * @param id String id of the object + */ + public void deleteStory(String id) { + + try { + HttpsConnection httpsConnection = new HttpsConnection(context, this.instance); + String response = httpsConnection.postJson(getAbsoluteUrl("/delete/" + id), 30, new JsonObject(), prefKeyOauthTokenT); + } catch (HttpsConnection.HttpsConnectionException e) { + setError(e.getStatusCode(), e); + e.printStackTrace(); + } catch (NoSuchAlgorithmException | IOException | KeyManagementException e) { + e.printStackTrace(); + } + } + /** * Posts a story * @@ -282,27 +302,6 @@ public class PixelfedAPI { return apiResponse; } - /** - * Delete a Pixelfed Story *synchronously* - * - * @return APIResponse - */ - public int deleteStory(String id) { - - HashMap params = new HashMap<>(); - params.put("id", id); - HttpsConnection httpsConnection; - try { - httpsConnection = new HttpsConnection(context, this.instance); - httpsConnection.delete(getAbsoluteUrl("/delete"), 10, params, prefKeyOauthTokenT); - actionCode = httpsConnection.getActionCode(); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException | IOException | KeyManagementException e) { - e.printStackTrace(); - } - return actionCode; - } /** * Set the error message diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java index 352ac9258..c8710c63c 100644 --- a/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java @@ -63,10 +63,12 @@ public class PixelfedStoriesListAdapter extends RecyclerView.Adapter stories; private ArrayList attachments; + private final String userId; - public PixelfedStoriesListAdapter(List stories) { + public PixelfedStoriesListAdapter(List stories, String userId) { super(); this.stories = stories; + this.userId = userId; } @@ -157,30 +159,13 @@ public class PixelfedStoriesListAdapter extends RecyclerView.Adapter 1) { - SliderAdapter sliderAdapter = new SliderAdapter(new WeakReference<>((Activity) context), false, attachments); + if (attachments != null && attachments.size() > 0) { + SliderAdapter sliderAdapter = new SliderAdapter(new WeakReference<>((Activity) context), true, attachments, userId); holder.imageSlider.setSliderAdapter(sliderAdapter); holder.imageSlider.setIndicatorAnimation(IndicatorAnimations.WORM); holder.imageSlider.setSliderTransformAnimation(SliderAnimations.SIMPLETRANSFORMATION); holder.art_media.setVisibility(View.GONE); holder.imageSlider.setVisibility(View.VISIBLE); - } else if (attachments != null && attachments.size() > 0) { - holder.art_media.setVisibility(View.VISIBLE); - holder.imageSlider.setVisibility(View.GONE); - if (attachments.get(0).getType().toLowerCase().equals("video")) { - holder.art_media_play.setVisibility(View.VISIBLE); - } - String url; - if (attachments.get(0).getPreview_url().endsWith("no-preview.png")) { - url = attachments.get(0).getUrl(); - } else { - url = attachments.get(0).getPreview_url(); - } - Glide.with(holder.itemView.getContext()) - .asBitmap() - .load(url) - .thumbnail(0.1f) - .into(holder.art_media); } int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); diff --git a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java index 1bbff5e29..23c4c9df3 100644 --- a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java @@ -18,12 +18,16 @@ package app.fedilab.android.drawers; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; +import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; +import android.os.Handler; +import android.os.Looper; import android.text.InputFilter; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -57,8 +61,10 @@ import app.fedilab.android.asynctasks.UpdateDescriptionAttachmentAsyncTask; import app.fedilab.android.client.Entities.Attachment; import app.fedilab.android.client.Entities.Error; import app.fedilab.android.client.Entities.Status; +import app.fedilab.android.client.PixelfedAPI; import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnRetrieveAttachmentInterface; +import app.fedilab.android.sqlite.Sqlite; import jp.wasabeef.glide.transformations.BlurTransformation; import static android.content.Context.MODE_PRIVATE; @@ -71,7 +77,17 @@ public class SliderAdapter extends SliderViewAdapter contextWeakReference; private final boolean canDelete; private final SliderAdapter sliderAdapter; + private boolean isStory = false; + private String userId; + public SliderAdapter(WeakReference contextWeakReference, boolean delete, ArrayList attachments, String userId) { + this.attachments = attachments; + this.contextWeakReference = contextWeakReference; + this.canDelete = delete; + this.sliderAdapter = this; + this.isStory = true; + this.userId = userId; + } public SliderAdapter(WeakReference contextWeakReference, boolean delete, ArrayList attachments) { this.attachments = attachments; @@ -169,8 +185,9 @@ public class SliderAdapter extends SliderViewAdapter showAddDescription(attachments.get(position))); - + if (!isStory) { + viewHolder.imageViewBackground.setOnClickListener(v -> showAddDescription(attachments.get(position))); + } viewHolder.delete_media.setOnClickListener(view -> showRemove(position)); } @@ -255,10 +272,28 @@ public class SliderAdapter extends SliderViewAdapter dialog1.dismiss()); dialog.setPositiveButton(R.string.yes, (dialog12, which) -> { - attachments.remove(attachments.get(position)); - sliderAdapter.notifyDataSetChanged(); - if (contextWeakReference.get() instanceof PixelfedComposeActivity) { - ((PixelfedComposeActivity) contextWeakReference.get()).redraw(); + String userIdOwner = sharedpreferences.getString(Helper.PREF_KEY_ID, null); + if (attachments.size() > position) { + if (isStory && userId.compareTo(userIdOwner) == 0) { + new Thread(() -> { + new PixelfedAPI(contextWeakReference.get()).deleteStory(attachments.get(position).getId()); + Handler mainHandler = new Handler(Looper.getMainLooper()); + Runnable myRunnable = () -> { + attachments.remove(attachments.get(position)); + sliderAdapter.notifyDataSetChanged(); + if (contextWeakReference.get() instanceof PixelfedComposeActivity) { + ((PixelfedComposeActivity) contextWeakReference.get()).redraw(); + } + }; + mainHandler.post(myRunnable); + }).start(); + } + } else { + attachments.remove(attachments.get(position)); + sliderAdapter.notifyDataSetChanged(); + if (contextWeakReference.get() instanceof PixelfedComposeActivity) { + ((PixelfedComposeActivity) contextWeakReference.get()).redraw(); + } } dialog12.dismiss(); }); diff --git a/app/src/main/java/app/fedilab/android/fragments/DisplayStoriesFragment.java b/app/src/main/java/app/fedilab/android/fragments/DisplayStoriesFragment.java index 17b377b87..a47c81859 100644 --- a/app/src/main/java/app/fedilab/android/fragments/DisplayStoriesFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/DisplayStoriesFragment.java @@ -95,7 +95,7 @@ public class DisplayStoriesFragment extends Fragment implements OnRetrieveStorie textviewNoAction = rootView.findViewById(R.id.no_action); mainLoader.setVisibility(View.VISIBLE); nextElementLoader.setVisibility(View.GONE); - pixelfedStoriesListAdapter = new PixelfedStoriesListAdapter(this.pixelFedStories); + pixelfedStoriesListAdapter = new PixelfedStoriesListAdapter(this.pixelFedStories, userId); lv_stories.setAdapter(pixelfedStoriesListAdapter); mLayoutManager = new LinearLayoutManager(context); lv_stories.setLayoutManager(mLayoutManager);