Browse Source

dm button on profile?! (quick & dirty warning)

renovate/org.robolectric-robolectric-4.x
Austin Huang 4 years ago
parent
commit
ab37c2d72b
No known key found for this signature in database GPG Key ID: 84C23AA04587A91F
  1. 13
      app/src/main/java/awais/instagrabber/asyncs/direct_messages/CreateThreadAction.java
  2. 4
      app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java
  3. 11
      app/src/main/java/awais/instagrabber/fragments/main/ProfileFragment.java
  4. 19
      app/src/main/res/layout/fragment_profile.xml
  5. 32
      app/src/main/res/navigation/profile_nav_graph.xml
  6. 2
      app/src/main/res/values/color.xml
  7. 1
      app/src/main/res/values/strings.xml

13
app/src/main/java/awais/instagrabber/asyncs/CommentAction.java → app/src/main/java/awais/instagrabber/asyncs/direct_messages/CreateThreadAction.java

@ -1,4 +1,4 @@
package awais.instagrabber.asyncs;
package awais.instagrabber.asyncs.direct_messages;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.util.Log; import android.util.Log;
@ -9,7 +9,6 @@ import java.io.DataOutputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import awais.instagrabber.models.StoryModel;
import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.Constants;
import awais.instagrabber.utils.CookieUtils; import awais.instagrabber.utils.CookieUtils;
import awais.instagrabber.utils.NetworkUtils; import awais.instagrabber.utils.NetworkUtils;
@ -17,16 +16,16 @@ import awais.instagrabber.utils.Utils;
import static awais.instagrabber.utils.Utils.settingsHelper; import static awais.instagrabber.utils.Utils.settingsHelper;
public class CommentAction extends AsyncTask<Void, Void, String> {
public class CreateThreadAction extends AsyncTask<Void, Void, String> {
private static final String TAG = "CommentAction"; private static final String TAG = "CommentAction";
private final String cookie; private final String cookie;
private final StoryModel storyModel;
private final String userId;
private final OnTaskCompleteListener onTaskCompleteListener; private final OnTaskCompleteListener onTaskCompleteListener;
public CommentAction(final String cookie, final StoryModel storyModel, final OnTaskCompleteListener onTaskCompleteListener) {
public CreateThreadAction(final String cookie, final String userId, final OnTaskCompleteListener onTaskCompleteListener) {
this.cookie = cookie; this.cookie = cookie;
this.storyModel = storyModel;
this.userId = userId;
this.onTaskCompleteListener = onTaskCompleteListener; this.onTaskCompleteListener = onTaskCompleteListener;
} }
@ -41,7 +40,7 @@ public class CommentAction extends AsyncTask<Void, Void, String> {
final String urlParameters = Utils.sign("{\"_csrftoken\":\"" + cookie.split("csrftoken=")[1].split(";")[0] final String urlParameters = Utils.sign("{\"_csrftoken\":\"" + cookie.split("csrftoken=")[1].split(";")[0]
+ "\",\"_uid\":\"" + CookieUtils.getUserIdFromCookie(cookie) + "\",\"_uid\":\"" + CookieUtils.getUserIdFromCookie(cookie)
+ "\",\"__uuid\":\"" + settingsHelper.getString(Constants.DEVICE_UUID) + "\",\"__uuid\":\"" + settingsHelper.getString(Constants.DEVICE_UUID)
+ "\",\"recipient_users\":\"[" + storyModel.getUserId() // <- string of array of number (not joking)
+ "\",\"recipient_users\":\"[" + userId // <- string of array of number (not joking)
+ "]\"}"); + "]\"}");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
if (urlParameters != null) { if (urlParameters != null) {

4
app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java

@ -62,12 +62,12 @@ import java.util.List;
import awais.instagrabber.BuildConfig; import awais.instagrabber.BuildConfig;
import awais.instagrabber.R; import awais.instagrabber.R;
import awais.instagrabber.adapters.StoriesAdapter; import awais.instagrabber.adapters.StoriesAdapter;
import awais.instagrabber.asyncs.CommentAction;
import awais.instagrabber.asyncs.DownloadAsync; import awais.instagrabber.asyncs.DownloadAsync;
import awais.instagrabber.asyncs.QuizAction; import awais.instagrabber.asyncs.QuizAction;
import awais.instagrabber.asyncs.RespondAction; import awais.instagrabber.asyncs.RespondAction;
import awais.instagrabber.asyncs.SeenAction; import awais.instagrabber.asyncs.SeenAction;
import awais.instagrabber.asyncs.VoteAction; import awais.instagrabber.asyncs.VoteAction;
import awais.instagrabber.asyncs.direct_messages.CreateThreadAction;
import awais.instagrabber.asyncs.direct_messages.DirectThreadBroadcaster; import awais.instagrabber.asyncs.direct_messages.DirectThreadBroadcaster;
import awais.instagrabber.customviews.helpers.SwipeGestureListener; import awais.instagrabber.customviews.helpers.SwipeGestureListener;
import awais.instagrabber.databinding.FragmentStoryViewerBinding; import awais.instagrabber.databinding.FragmentStoryViewerBinding;
@ -196,7 +196,7 @@ public class StoryViewerFragment extends Fragment {
new AlertDialog.Builder(context) new AlertDialog.Builder(context)
.setTitle(R.string.reply_story) .setTitle(R.string.reply_story)
.setView(input) .setView(input)
.setPositiveButton(R.string.ok, (d, w) -> new CommentAction(cookie, currentStory, threadId -> {
.setPositiveButton(R.string.ok, (d, w) -> new CreateThreadAction(cookie, currentStory.getUserId(), threadId -> {
try { try {
final DirectThreadBroadcaster.StoryReplyBroadcastOptions options = new DirectThreadBroadcaster.StoryReplyBroadcastOptions( final DirectThreadBroadcaster.StoryReplyBroadcastOptions options = new DirectThreadBroadcaster.StoryReplyBroadcastOptions(
input.getText().toString(), input.getText().toString(),

11
app/src/main/java/awais/instagrabber/fragments/main/ProfileFragment.java

@ -56,6 +56,7 @@ import awais.instagrabber.asyncs.HighlightsFetcher;
import awais.instagrabber.asyncs.PostsFetcher; import awais.instagrabber.asyncs.PostsFetcher;
import awais.instagrabber.asyncs.ProfileFetcher; import awais.instagrabber.asyncs.ProfileFetcher;
import awais.instagrabber.asyncs.UsernameFetcher; import awais.instagrabber.asyncs.UsernameFetcher;
import awais.instagrabber.asyncs.direct_messages.CreateThreadAction;
import awais.instagrabber.asyncs.i.iStoryStatusFetcher; import awais.instagrabber.asyncs.i.iStoryStatusFetcher;
import awais.instagrabber.customviews.PrimaryActionModeCallback; import awais.instagrabber.customviews.PrimaryActionModeCallback;
import awais.instagrabber.customviews.PrimaryActionModeCallback.CallbacksHelper; import awais.instagrabber.customviews.PrimaryActionModeCallback.CallbacksHelper;
@ -484,11 +485,13 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
binding.btnTagged.setVisibility(View.VISIBLE); binding.btnTagged.setVisibility(View.VISIBLE);
binding.btnSaved.setVisibility(View.VISIBLE); binding.btnSaved.setVisibility(View.VISIBLE);
binding.btnLiked.setVisibility(View.VISIBLE); binding.btnLiked.setVisibility(View.VISIBLE);
binding.btnDM.setVisibility(View.GONE);
binding.btnSaved.setText(R.string.saved); binding.btnSaved.setText(R.string.saved);
} else { } else {
binding.btnTagged.setVisibility(View.GONE); binding.btnTagged.setVisibility(View.GONE);
binding.btnSaved.setVisibility(View.GONE); binding.btnSaved.setVisibility(View.GONE);
binding.btnLiked.setVisibility(View.GONE); binding.btnLiked.setVisibility(View.GONE);
binding.btnDM.setVisibility(View.VISIBLE); // maybe there is a judgment mechanism?
binding.btnFollow.setVisibility(View.VISIBLE); binding.btnFollow.setVisibility(View.VISIBLE);
if (profileModel.getFollowing()) { if (profileModel.getFollowing()) {
binding.btnFollow.setText(R.string.unfollow); binding.btnFollow.setText(R.string.unfollow);
@ -508,7 +511,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
restrictMenuItem.setTitle(R.string.restrict); restrictMenuItem.setTitle(R.string.restrict);
} }
} }
binding.btnTagged.setVisibility(View.VISIBLE);
binding.btnTagged.setVisibility(profileModel.isReallyPrivate() ? View.GONE : View.VISIBLE);
if (blockMenuItem != null) { if (blockMenuItem != null) {
blockMenuItem.setVisible(true); blockMenuItem.setVisible(true);
if (profileModel.getBlocked()) { if (profileModel.getBlocked()) {
@ -691,6 +694,12 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
PostItemType.TAGGED); PostItemType.TAGGED);
NavHostFragment.findNavController(this).navigate(action); NavHostFragment.findNavController(this).navigate(action);
}); });
binding.btnDM.setOnClickListener(v -> {
new CreateThreadAction(cookie, profileModel.getId(), threadId -> {
final NavDirections action = ProfileFragmentDirections.actionProfileFragmentToDMThreadFragment(threadId, profileModel.getUsername());
NavHostFragment.findNavController(this).navigate(action);
}).execute();
});
binding.mainProfileImage.setOnClickListener(v -> { binding.mainProfileImage.setOnClickListener(v -> {
if (storyModels == null || storyModels.length <= 0) { if (storyModels == null || storyModels.length <= 0) {
// show profile pic // show profile pic

19
app/src/main/res/layout/fragment_profile.xml

@ -221,11 +221,30 @@
app:iconTint="@color/red_600" app:iconTint="@color/red_600"
app:layout_constraintBottom_toTopOf="@id/highlights_barrier" app:layout_constraintBottom_toTopOf="@id/highlights_barrier"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toStartOf="@id/btnDM"
app:layout_constraintStart_toEndOf="@id/btnSaved" app:layout_constraintStart_toEndOf="@id/btnSaved"
app:layout_constraintTop_toBottomOf="@id/mainUrl" app:layout_constraintTop_toBottomOf="@id/mainUrl"
app:rippleColor="@color/red_300" app:rippleColor="@color/red_300"
tools:visibility="visible" /> tools:visibility="visible" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnDM"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/dm_person"
android:textColor="@color/green"
android:visibility="gone"
app:icon="@drawable/ic_send_24"
app:iconGravity="top"
app:iconTint="@color/green"
app:layout_constraintBottom_toTopOf="@id/highlights_barrier"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/btnLiked"
app:layout_constraintTop_toBottomOf="@id/mainUrl"
app:rippleColor="@color/green"
tools:visibility="visible" />
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/highlights_barrier" android:id="@+id/highlights_barrier"
android:layout_width="wrap_content" android:layout_width="wrap_content"

32
app/src/main/res/navigation/profile_nav_graph.xml

@ -36,7 +36,7 @@
<action <action
android:id="@+id/action_global_profileFragment" android:id="@+id/action_global_profileFragment"
app:destination="@id/profileFragment">
app:destination="@id/profile_nav_graph">
<argument <argument
android:name="username" android:name="username"
android:defaultValue="" android:defaultValue=""
@ -74,6 +74,9 @@
<action <action
android:id="@+id/action_profileFragment_to_storyViewerFragment" android:id="@+id/action_profileFragment_to_storyViewerFragment"
app:destination="@id/storyViewerFragment" /> app:destination="@id/storyViewerFragment" />
<action
android:id="@+id/action_profileFragment_to_dMThreadFragment"
app:destination="@id/directMessagesThreadFragment" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/savedViewerFragment" android:id="@+id/savedViewerFragment"
@ -145,4 +148,31 @@
app:argType="string" app:argType="string"
app:nullable="true" /> app:nullable="true" />
</fragment> </fragment>
<fragment
android:id="@+id/directMessagesThreadFragment"
android:name="awais.instagrabber.fragments.directmessages.DirectMessageThreadFragment"
android:label="DirectMessagesThreadFragment"
tools:layout="@layout/fragment_direct_messages_thread">
<argument
android:name="threadId"
app:argType="string" />
<argument
android:name="title"
app:argType="string" />
<action
android:id="@+id/action_dMThreadFragment_to_dMSettingsFragment"
app:destination="@id/directMessagesSettingsFragment" />
</fragment>
<fragment
android:id="@+id/directMessagesSettingsFragment"
android:name="awais.instagrabber.fragments.directmessages.DirectMessageSettingsFragment"
android:label="DirectMessagesSettingsFragment"
tools:layout="@layout/fragment_direct_messages_settings">
<argument
android:name="threadId"
app:argType="string" />
<argument
android:name="title"
app:argType="string" />
</fragment>
</navigation> </navigation>

2
app/src/main/res/values/color.xml

@ -141,6 +141,8 @@
<color name="yellow_A400">#FFEA00</color> <color name="yellow_A400">#FFEA00</color>
<color name="yellow_A700">#FFD600</color> <color name="yellow_A700">#FFD600</color>
<color name="green">#5CE362</color>
<!-- Barinsta Theme colors --> <!-- Barinsta Theme colors -->
<color name="barinstaColorPrimary">#a86735</color> <color name="barinstaColorPrimary">#a86735</color>
<color name="barinstaColorPrimaryLight">#dd9561</color> <color name="barinstaColorPrimaryLight">#dd9561</color>

1
app/src/main/res/values/strings.xml

@ -112,6 +112,7 @@
<string name="liked">Liked</string> <string name="liked">Liked</string>
<string name="saved">Saved</string> <string name="saved">Saved</string>
<string name="tagged">Tagged</string> <string name="tagged">Tagged</string>
<string name="dm_person">Message</string>
<string name="like">Like (%s)</string> <string name="like">Like (%s)</string>
<string name="unlike">Unlike (%s)</string> <string name="unlike">Unlike (%s)</string>
<string name="bookmark">Bookmark</string> <string name="bookmark">Bookmark</string>

Loading…
Cancel
Save