mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-22 22:57:29 +00:00
Merge branch 'master' into pr/753
This commit is contained in:
commit
0b8545c0e1
@ -540,7 +540,7 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
public void onSuccess(final Void result) {
|
public void onSuccess(final Void result) {
|
||||||
hashtagDetailsBinding.favChip.setText(R.string.favorite_short);
|
hashtagDetailsBinding.favChip.setText(R.string.favorite_short);
|
||||||
hashtagDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
hashtagDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
||||||
showSnackbar(getString(R.string.added_to_favs_short));
|
showSnackbar(getString(R.string.added_to_favs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -528,7 +528,7 @@ public class LocationFragment extends Fragment implements SwipeRefreshLayout.OnR
|
|||||||
public void onSuccess(final Void result) {
|
public void onSuccess(final Void result) {
|
||||||
locationDetailsBinding.favChip.setText(R.string.favorite_short);
|
locationDetailsBinding.favChip.setText(R.string.favorite_short);
|
||||||
locationDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
locationDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
||||||
showSnackbar(getString(R.string.added_to_favs_short));
|
showSnackbar(getString(R.string.added_to_favs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -122,9 +122,8 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
private boolean hasStories = false;
|
private boolean hasStories = false;
|
||||||
private HighlightsAdapter highlightsAdapter;
|
private HighlightsAdapter highlightsAdapter;
|
||||||
private HighlightsViewModel highlightsViewModel;
|
private HighlightsViewModel highlightsViewModel;
|
||||||
private MenuItem blockMenuItem;
|
private MenuItem blockMenuItem, restrictMenuItem, chainingMenuItem;
|
||||||
private MenuItem restrictMenuItem;
|
private MenuItem muteStoriesMenuItem, mutePostsMenuItem;
|
||||||
private MenuItem chainingMenuItem;
|
|
||||||
private boolean highlightsFetching;
|
private boolean highlightsFetching;
|
||||||
private boolean postsSetupDone = false;
|
private boolean postsSetupDone = false;
|
||||||
private Set<Media> selectedFeedModels;
|
private Set<Media> selectedFeedModels;
|
||||||
@ -381,6 +380,25 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
restrictMenuItem.setVisible(false);
|
restrictMenuItem.setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
muteStoriesMenuItem = menu.findItem(R.id.mute_stories);
|
||||||
|
if (muteStoriesMenuItem != null) {
|
||||||
|
if (profileModel != null) {
|
||||||
|
muteStoriesMenuItem.setVisible(!Objects.equals(profileModel.getPk(), CookieUtils.getUserIdFromCookie(cookie)));
|
||||||
|
muteStoriesMenuItem.setTitle(profileModel.getFriendshipStatus().isMutingReel() ? R.string.mute_stories : R.string.unmute_stories);
|
||||||
|
} else {
|
||||||
|
muteStoriesMenuItem.setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mutePostsMenuItem = menu.findItem(R.id.mute_posts);
|
||||||
|
if (mutePostsMenuItem != null) {
|
||||||
|
if (profileModel != null) {
|
||||||
|
mutePostsMenuItem.setVisible(!Objects.equals(profileModel.getPk(), CookieUtils.getUserIdFromCookie(cookie)));
|
||||||
|
mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().isMuting() ? R.string.mute_posts : R.string.unmute_posts);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mutePostsMenuItem.setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
chainingMenuItem = menu.findItem(R.id.chaining);
|
chainingMenuItem = menu.findItem(R.id.chaining);
|
||||||
if (chainingMenuItem != null) {
|
if (chainingMenuItem != null) {
|
||||||
if (profileModel != null) {
|
if (profileModel != null) {
|
||||||
@ -459,6 +477,48 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
NavHostFragment.findNavController(this).navigate(navDirections);
|
NavHostFragment.findNavController(this).navigate(navDirections);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (item.getItemId() == R.id.mute_stories) {
|
||||||
|
if (!isLoggedIn) return false;
|
||||||
|
final String action = profileModel.getFriendshipStatus().isMutingReel() ? "Unmute stories" : "Mute stories";
|
||||||
|
friendshipService.changeMute(
|
||||||
|
profileModel.getFriendshipStatus().isMutingReel(),
|
||||||
|
profileModel.getPk(),
|
||||||
|
true,
|
||||||
|
new ServiceCallback<FriendshipChangeResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(final FriendshipChangeResponse result) {
|
||||||
|
Log.d(TAG, action + " success: " + result);
|
||||||
|
fetchProfileDetails();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(final Throwable t) {
|
||||||
|
Log.e(TAG, "Error while performing " + action, t);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (item.getItemId() == R.id.mute_posts) {
|
||||||
|
if (!isLoggedIn) return false;
|
||||||
|
final String action = profileModel.getFriendshipStatus().isMuting() ? "Unmute stories" : "Mute stories";
|
||||||
|
friendshipService.changeMute(
|
||||||
|
profileModel.getFriendshipStatus().isMuting(),
|
||||||
|
profileModel.getPk(),
|
||||||
|
false,
|
||||||
|
new ServiceCallback<FriendshipChangeResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(final FriendshipChangeResponse result) {
|
||||||
|
Log.d(TAG, action + " success: " + result);
|
||||||
|
fetchProfileDetails();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(final Throwable t) {
|
||||||
|
Log.e(TAG, "Error while performing " + action, t);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,7 +677,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(final Favorite result) {
|
public void onSuccess(final Favorite result) {
|
||||||
profileDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
profileDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
||||||
profileDetailsBinding.favChip.setText(R.string.added_to_favs_short);
|
profileDetailsBinding.favChip.setText(R.string.favorite_short);
|
||||||
favoriteRepository.insertOrUpdateFavorite(new Favorite(
|
favoriteRepository.insertOrUpdateFavorite(new Favorite(
|
||||||
result.getId(),
|
result.getId(),
|
||||||
profileModel.getUsername(),
|
profileModel.getUsername(),
|
||||||
@ -669,9 +729,9 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
), new RepositoryCallback<Void>() {
|
), new RepositoryCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final Void result) {
|
public void onSuccess(final Void result) {
|
||||||
profileDetailsBinding.favChip.setText(R.string.added_to_favs_short);
|
profileDetailsBinding.favChip.setText(R.string.favorite_short);
|
||||||
profileDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
profileDetailsBinding.favChip.setChipIconResource(R.drawable.ic_star_check_24);
|
||||||
showSnackbar(getString(R.string.added_to_favs_short));
|
showSnackbar(getString(R.string.added_to_favs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -689,7 +749,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
|
|
||||||
final String postCount = String.valueOf(profileModel.getMediaCount());
|
final String postCount = String.valueOf(profileModel.getMediaCount());
|
||||||
|
|
||||||
SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_count_inline,
|
SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_count,
|
||||||
profileModel.getMediaCount() > 2000000000L
|
profileModel.getMediaCount() > 2000000000L
|
||||||
? 2000000000
|
? 2000000000
|
||||||
: (int) profileModel.getMediaCount(),
|
: (int) profileModel.getMediaCount(),
|
||||||
@ -896,21 +956,21 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
}
|
}
|
||||||
if (restrictMenuItem != null) {
|
if (restrictMenuItem != null) {
|
||||||
restrictMenuItem.setVisible(true);
|
restrictMenuItem.setVisible(true);
|
||||||
if (profileModel.getFriendshipStatus().isRestricted()) {
|
restrictMenuItem.setTitle(profileModel.getFriendshipStatus().isRestricted() ? R.string.unrestrict : R.string.restrict);
|
||||||
restrictMenuItem.setTitle(R.string.unrestrict);
|
|
||||||
} else {
|
|
||||||
restrictMenuItem.setTitle(R.string.restrict);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (blockMenuItem != null) {
|
if (blockMenuItem != null) {
|
||||||
blockMenuItem.setVisible(true);
|
blockMenuItem.setVisible(true);
|
||||||
if (profileModel.getFriendshipStatus().isBlocking()) {
|
blockMenuItem.setTitle(profileModel.getFriendshipStatus().isBlocking() ? R.string.unblock : R.string.block);
|
||||||
blockMenuItem.setTitle(R.string.unblock);
|
|
||||||
} else {
|
|
||||||
blockMenuItem.setTitle(R.string.block);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (chainingMenuItem != null && !Objects.equals(profileId, myId)) {
|
if (muteStoriesMenuItem != null) {
|
||||||
|
muteStoriesMenuItem.setVisible(true);
|
||||||
|
muteStoriesMenuItem.setTitle(profileModel.getFriendshipStatus().isMutingReel() ? R.string.unmute_stories : R.string.mute_stories);
|
||||||
|
}
|
||||||
|
if (mutePostsMenuItem != null) {
|
||||||
|
mutePostsMenuItem.setVisible(true);
|
||||||
|
mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().isMuting() ? R.string.unmute_posts : R.string.mute_posts);
|
||||||
|
}
|
||||||
|
if (chainingMenuItem != null) {
|
||||||
chainingMenuItem.setVisible(true);
|
chainingMenuItem.setVisible(true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -45,10 +45,9 @@ import static awais.instagrabber.utils.Utils.settingsHelper;
|
|||||||
public class MorePreferencesFragment extends BasePreferencesFragment {
|
public class MorePreferencesFragment extends BasePreferencesFragment {
|
||||||
private static final String TAG = "MorePreferencesFragment";
|
private static final String TAG = "MorePreferencesFragment";
|
||||||
|
|
||||||
private final AccountRepository accountRepository;
|
private AccountRepository accountRepository;
|
||||||
|
|
||||||
public MorePreferencesFragment() {
|
public MorePreferencesFragment() {
|
||||||
accountRepository = AccountRepository.getInstance(AccountDataSource.getInstance(getContext()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -58,6 +57,7 @@ public class MorePreferencesFragment extends BasePreferencesFragment {
|
|||||||
// screen.addPreference(new MoreHeaderPreference(getContext()));
|
// screen.addPreference(new MoreHeaderPreference(getContext()));
|
||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
if (context == null) return;
|
if (context == null) return;
|
||||||
|
accountRepository = AccountRepository.getInstance(AccountDataSource.getInstance(context));
|
||||||
final PreferenceCategory accountCategory = new PreferenceCategory(context);
|
final PreferenceCategory accountCategory = new PreferenceCategory(context);
|
||||||
accountCategory.setTitle(R.string.account);
|
accountCategory.setTitle(R.string.account);
|
||||||
accountCategory.setIconSpaceReserved(false);
|
accountCategory.setIconSpaceReserved(false);
|
||||||
|
@ -29,4 +29,9 @@ public interface FriendshipRepository {
|
|||||||
Call<String> getList(@Path("userId") long userId,
|
Call<String> getList(@Path("userId") long userId,
|
||||||
@Path("type") String type, // following or followers
|
@Path("type") String type, // following or followers
|
||||||
@QueryMap(encoded = true) Map<String, String> queryParams);
|
@QueryMap(encoded = true) Map<String, String> queryParams);
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
|
@POST("/api/v1/friendships/{action}/")
|
||||||
|
Call<FriendshipChangeResponse> changeMute(@Path("action") String action,
|
||||||
|
@FieldMap Map<String, String> form);
|
||||||
}
|
}
|
||||||
|
@ -158,6 +158,38 @@ public class FriendshipService extends BaseService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void changeMute(final boolean unmute,
|
||||||
|
final long targetUserId,
|
||||||
|
final boolean story, // true for story, false for posts
|
||||||
|
final ServiceCallback<FriendshipChangeResponse> callback) {
|
||||||
|
final Map<String, String> form = new HashMap<>(4);
|
||||||
|
form.put("_csrftoken", csrfToken);
|
||||||
|
form.put("_uid", String.valueOf(userId));
|
||||||
|
form.put("_uuid", deviceUuid);
|
||||||
|
form.put(story ? "target_reel_author_id" : "target_posts_author_id", String.valueOf(targetUserId));
|
||||||
|
final Call<FriendshipChangeResponse> request = repository.changeMute(unmute ?
|
||||||
|
"unmute_posts_or_story_from_follow" :
|
||||||
|
"mute_posts_or_story_from_follow",
|
||||||
|
form);
|
||||||
|
request.enqueue(new Callback<FriendshipChangeResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull final Call<FriendshipChangeResponse> call,
|
||||||
|
@NonNull final Response<FriendshipChangeResponse> response) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onSuccess(response.body());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull final Call<FriendshipChangeResponse> call,
|
||||||
|
@NonNull final Throwable t) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onFailure(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void getList(final boolean follower,
|
public void getList(final boolean follower,
|
||||||
final long targetUserId,
|
final long targetUserId,
|
||||||
final String maxId,
|
final String maxId,
|
||||||
|
@ -137,6 +137,7 @@ public class StoriesService extends BaseService {
|
|||||||
final JSONArray feedStoriesReel = new JSONObject(body).getJSONArray("tray");
|
final JSONArray feedStoriesReel = new JSONObject(body).getJSONArray("tray");
|
||||||
for (int i = 0; i < feedStoriesReel.length(); ++i) {
|
for (int i = 0; i < feedStoriesReel.length(); ++i) {
|
||||||
final JSONObject node = feedStoriesReel.getJSONObject(i);
|
final JSONObject node = feedStoriesReel.getJSONObject(i);
|
||||||
|
if (node.optBoolean("hide_from_feed_unit")) continue;
|
||||||
final JSONObject userJson = node.getJSONObject(node.has("user") ? "user" : "owner");
|
final JSONObject userJson = node.getJSONObject(node.has("user") ? "user" : "owner");
|
||||||
try {
|
try {
|
||||||
final User user = new User(userJson.getLong("pk"),
|
final User user = new User(userJson.getLong("pk"),
|
||||||
|
@ -26,4 +26,18 @@
|
|||||||
android:title="@string/action_ayml"
|
android:title="@string/action_ayml"
|
||||||
android:visible="false"
|
android:visible="false"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/mute_stories"
|
||||||
|
android:icon="@drawable/ic_highlight_off_24"
|
||||||
|
android:title="@string/mute_stories"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/mute_posts"
|
||||||
|
android:icon="@drawable/ic_highlight_off_24"
|
||||||
|
android:title="@string/mute_posts"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="never" />
|
||||||
</menu>
|
</menu>
|
@ -48,10 +48,14 @@
|
|||||||
<string name="instadp_settings">Use Instadp for high definition profile pictures</string>
|
<string name="instadp_settings">Use Instadp for high definition profile pictures</string>
|
||||||
<string name="import_export">Import/Export</string>
|
<string name="import_export">Import/Export</string>
|
||||||
<string name="select_language">Language</string>
|
<string name="select_language">Language</string>
|
||||||
<plurals name="main_posts_count_inline">
|
<plurals name="main_posts_count">
|
||||||
<item quantity="one">%s\nPost</item>
|
<item quantity="one">%s\nPost</item>
|
||||||
<item quantity="other">%s\nPosts</item>
|
<item quantity="other">%s\nPosts</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="main_posts_count_inline">
|
||||||
|
<item quantity="one">%s Post</item>
|
||||||
|
<item quantity="other">%s Posts</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="main_posts_followers">
|
<plurals name="main_posts_followers">
|
||||||
<item quantity="one">%s\nFollower</item>
|
<item quantity="one">%s\nFollower</item>
|
||||||
<item quantity="other">%s\nFollowers</item>
|
<item quantity="other">%s\nFollowers</item>
|
||||||
@ -117,12 +121,15 @@
|
|||||||
<string name="unbookmark">Unbookmark</string>
|
<string name="unbookmark">Unbookmark</string>
|
||||||
<string name="follow">Follow</string>
|
<string name="follow">Follow</string>
|
||||||
<string name="unfollow">Unfollow</string>
|
<string name="unfollow">Unfollow</string>
|
||||||
<string name="favorite_short">Favorite</string>
|
<string name="favorite_short" comment="Adjective, not verb">Favorite</string>
|
||||||
<string name="unfavorite_short">Unfavorite</string>
|
|
||||||
<string name="block">Block</string>
|
<string name="block">Block</string>
|
||||||
<string name="unblock">Unblock</string>
|
<string name="unblock">Unblock</string>
|
||||||
<string name="restrict">Restrict</string>
|
<string name="restrict">Restrict</string>
|
||||||
<string name="unrestrict">Unrestrict</string>
|
<string name="unrestrict">Unrestrict</string>
|
||||||
|
<string name="mute_stories">Mute stories</string>
|
||||||
|
<string name="mute_posts">Mute posts</string>
|
||||||
|
<string name="unmute_stories">Unmute stories</string>
|
||||||
|
<string name="unmute_posts">Unmute posts</string>
|
||||||
<string name="bio_copy">Copy bio</string>
|
<string name="bio_copy">Copy bio</string>
|
||||||
<string name="bio_translate">Translate bio</string>
|
<string name="bio_translate">Translate bio</string>
|
||||||
<string name="status_mutual">Mutual</string>
|
<string name="status_mutual">Mutual</string>
|
||||||
@ -310,14 +317,13 @@
|
|||||||
<string name="light_barinsta_theme" comment="Yes, this one is Barista (the theme), you can also substitute it with other coffee-related words">Barista</string>
|
<string name="light_barinsta_theme" comment="Yes, this one is Barista (the theme), you can also substitute it with other coffee-related words">Barista</string>
|
||||||
<string name="light_bibliogram_theme" translatable="false">Bibliogram</string>
|
<string name="light_bibliogram_theme" translatable="false">Bibliogram</string>
|
||||||
<string name="dark_material_dark_theme">Material Dark</string>
|
<string name="dark_material_dark_theme">Material Dark</string>
|
||||||
<string name="added_to_favs">Added to Favorites</string>
|
<string name="added_to_favs">Added to Favorites!</string>
|
||||||
<string name="added_to_favs_short" comment="Here it's an adjective (equivalent to verb past tense), used for the favorite chip on profile/hashtag/location fragments, so be short">Favorited</string>
|
<string name="add_to_favorites">Add to Favorites</string>
|
||||||
<string name="add_to_favorites" comment="Here it's a verb, used for the favorite chip on profile/hashtag/location fragments, so be short">Favorite</string>
|
|
||||||
<string name="accounts">Accounts</string>
|
<string name="accounts">Accounts</string>
|
||||||
<string name="hashtags">Hashtags</string>
|
<string name="hashtags">Hashtags</string>
|
||||||
<string name="locations">Locations</string>
|
<string name="locations">Locations</string>
|
||||||
<string name="unknown">Unknown</string>
|
<string name="unknown">Unknown</string>
|
||||||
<string name="removed_from_favs">Removed from Favourites</string>
|
<string name="removed_from_favs">Removed from Favourites!</string>
|
||||||
<string name="backup_and_restore">Backup & Restore</string>
|
<string name="backup_and_restore">Backup & Restore</string>
|
||||||
<string name="backup_summary">Backup Barinsta app settings, account login data, and/or favorites to a plain text or encrypted backup file for later restoration.</string>
|
<string name="backup_summary">Backup Barinsta app settings, account login data, and/or favorites to a plain text or encrypted backup file for later restoration.</string>
|
||||||
<string name="backup_warning">If you\'re backing up account login data, treat the file as confidential and keep it somewhere safe!</string>
|
<string name="backup_warning">If you\'re backing up account login data, treat the file as confidential and keep it somewhere safe!</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user