Convert User to kotlin

This commit is contained in:
Ammar Githam 2021-06-05 19:58:01 +09:00
parent 04aae488d9
commit 3f09c7d173
5 changed files with 46 additions and 304 deletions

View File

@ -296,8 +296,8 @@ class DirectMessageSettingsFragment : Fragment(), ConfirmDialogFragmentCallback
usersAdapter = DirectUsersAdapter( usersAdapter = DirectUsersAdapter(
inviter?.pk ?: -1, inviter?.pk ?: -1,
{ _: Int, user: User, _: Boolean -> { _: Int, user: User, _: Boolean ->
if (isEmpty(user.username) && !isEmpty(user.fbId)) { if (user.username.isBlank() && !user.interopMessagingUserFbid.isNullOrBlank()) {
Utils.openURL(context, "https://facebook.com/" + user.fbId) Utils.openURL(context, "https://facebook.com/" + user.interopMessagingUserFbid)
return@DirectUsersAdapter return@DirectUsersAdapter
} }
if (isEmpty(user.username)) return@DirectUsersAdapter if (isEmpty(user.username)) return@DirectUsersAdapter

View File

@ -433,7 +433,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
} }
chainingMenuItem = menu.findItem(R.id.chaining); chainingMenuItem = menu.findItem(R.id.chaining);
if (chainingMenuItem != null) { if (chainingMenuItem != null) {
chainingMenuItem.setVisible(isNotMe && profileModel.hasChaining()); chainingMenuItem.setVisible(isNotMe && profileModel.getHasChaining());
} }
removeFollowerMenuItem = menu.findItem(R.id.remove_follower); removeFollowerMenuItem = menu.findItem(R.id.remove_follower);
if (removeFollowerMenuItem != null) { if (removeFollowerMenuItem != null) {
@ -859,7 +859,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
profileDetailsBinding.profileContext.setVisibility(View.GONE); profileDetailsBinding.profileContext.setVisibility(View.GONE);
} else { } else {
profileDetailsBinding.profileContext.setVisibility(View.VISIBLE); profileDetailsBinding.profileContext.setVisibility(View.VISIBLE);
final List<UserProfileContextLink> userProfileContextLinks = profileModel.getProfileContextLinks(); final List<UserProfileContextLink> userProfileContextLinks = profileModel.getProfileContextLinksWithUserIds();
for (int i = 0; i < userProfileContextLinks.size(); i++) { for (int i = 0; i < userProfileContextLinks.size(); i++) {
final UserProfileContextLink link = userProfileContextLinks.get(i); final UserProfileContextLink link = userProfileContextLinks.get(i);
if (link.getUsername() != null) if (link.getUsername() != null)
@ -980,7 +980,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().getMuting() ? R.string.unmute_posts : R.string.mute_posts); mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().getMuting() ? R.string.unmute_posts : R.string.mute_posts);
} }
if (chainingMenuItem != null) { if (chainingMenuItem != null) {
chainingMenuItem.setVisible(profileModel.hasChaining()); chainingMenuItem.setVisible(profileModel.getHasChaining());
} }
if (removeFollowerMenuItem != null) { if (removeFollowerMenuItem != null) {
removeFollowerMenuItem.setVisible(profileModel.getFriendshipStatus().getFollowedBy()); removeFollowerMenuItem.setVisible(profileModel.getFriendshipStatus().getFollowedBy());

View File

@ -1,296 +1,38 @@
package awais.instagrabber.repositories.responses; package awais.instagrabber.repositories.responses
import java.io.Serializable; import java.io.Serializable
import java.util.List;
import java.util.Objects;
public class User implements Serializable {
private final long pk;
private final String username;
private final String fullName;
private final boolean isPrivate;
private final String profilePicUrl;
private final String profilePicId;
private FriendshipStatus friendshipStatus;
private final boolean isVerified;
private final boolean hasAnonymousProfilePicture;
private final boolean isUnpublished;
private final boolean isFavorite;
private final boolean isDirectappInstalled;
private final boolean hasChaining;
private final String reelAutoArchive;
private final String allowedCommenterType;
private final long mediaCount;
private final long followerCount;
private final long followingCount;
private final long followingTagCount;
private final String biography;
private final String externalUrl;
private final long usertagsCount;
private final String publicEmail;
private final HdProfilePicUrlInfo hdProfilePicUrlInfo;
private final String profileContext; // "also followed by" your friends
private final List<UserProfileContextLink> profileContextLinksWithUserIds; // ^
private final String socialContext; // AYML
private final String interopMessagingUserFbid; // in DMs only: Facebook user ID
public User(final long pk, data class User @JvmOverloads constructor(
final String username, val pk: Long = 0,
final String fullName, val username: String = "",
final boolean isPrivate, val fullName: String = "",
final String profilePicUrl, val isPrivate: Boolean = false,
final String profilePicId, val profilePicUrl: String? = null,
final FriendshipStatus friendshipStatus, val isVerified: Boolean = false,
final boolean isVerified, val profilePicId: String? = null,
final boolean hasAnonymousProfilePicture, var friendshipStatus: FriendshipStatus? = null,
final boolean isUnpublished, val hasAnonymousProfilePicture: Boolean = false,
final boolean isFavorite, val isUnpublished: Boolean = false,
final boolean isDirectappInstalled, val isFavorite: Boolean = false,
final boolean hasChaining, val isDirectappInstalled: Boolean = false,
final String reelAutoArchive, val hasChaining: Boolean = false,
final String allowedCommenterType, val reelAutoArchive: String? = null,
final long mediaCount, val allowedCommenterType: String? = null,
final long followerCount, val mediaCount: Long = 0,
final long followingCount, val followerCount: Long = 0,
final long followingTagCount, val followingCount: Long = 0,
final String biography, val followingTagCount: Long = 0,
final String externalUrl, val biography: String? = null,
final long usertagsCount, val externalUrl: String? = null,
final String publicEmail, val usertagsCount: Long = 0,
final HdProfilePicUrlInfo hdProfilePicUrlInfo, val publicEmail: String? = null,
final String profileContext, val hdProfilePicUrlInfo: HdProfilePicUrlInfo? = null,
final List<UserProfileContextLink> profileContextLinksWithUserIds, val profileContext: String? = null, // "also followed by" your friends
final String socialContext, val profileContextLinksWithUserIds: List<UserProfileContextLink>? = null, // ^
final String interopMessagingUserFbid) { val socialContext: String? = null, // AYML
this.pk = pk; val interopMessagingUserFbid: String? = null, // in DMs only: Facebook user ID
this.username = username; ) : Serializable {
this.fullName = fullName; val hDProfilePicUrl: String
this.isPrivate = isPrivate; get() = hdProfilePicUrlInfo?.url ?: profilePicUrl ?: ""
this.profilePicUrl = profilePicUrl;
this.profilePicId = profilePicId;
this.friendshipStatus = friendshipStatus;
this.isVerified = isVerified;
this.hasAnonymousProfilePicture = hasAnonymousProfilePicture;
this.isUnpublished = isUnpublished;
this.isFavorite = isFavorite;
this.isDirectappInstalled = isDirectappInstalled;
this.hasChaining = hasChaining;
this.reelAutoArchive = reelAutoArchive;
this.allowedCommenterType = allowedCommenterType;
this.mediaCount = mediaCount;
this.followerCount = followerCount;
this.followingCount = followingCount;
this.followingTagCount = followingTagCount;
this.biography = biography;
this.externalUrl = externalUrl;
this.usertagsCount = usertagsCount;
this.publicEmail = publicEmail;
this.hdProfilePicUrlInfo = hdProfilePicUrlInfo;
this.profileContext = profileContext;
this.profileContextLinksWithUserIds = profileContextLinksWithUserIds;
this.socialContext = socialContext;
this.interopMessagingUserFbid = interopMessagingUserFbid;
}
public User(final long pk,
final String username,
final String fullName,
final boolean isPrivate,
final String profilePicUrl,
final boolean isVerified) {
this.pk = pk;
this.username = username;
this.fullName = fullName;
this.isPrivate = isPrivate;
this.profilePicUrl = profilePicUrl;
this.profilePicId = null;
this.friendshipStatus = new FriendshipStatus(
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
);
this.isVerified = isVerified;
this.hasAnonymousProfilePicture = false;
this.isUnpublished = false;
this.isFavorite = false;
this.isDirectappInstalled = false;
this.hasChaining = false;
this.reelAutoArchive = null;
this.allowedCommenterType = null;
this.mediaCount = 0;
this.followerCount = 0;
this.followingCount = 0;
this.followingTagCount = 0;
this.biography = null;
this.externalUrl = null;
this.usertagsCount = 0;
this.publicEmail = null;
this.hdProfilePicUrlInfo = null;
this.profileContext = null;
this.profileContextLinksWithUserIds = null;
this.socialContext = null;
this.interopMessagingUserFbid = null;
}
public long getPk() {
return pk;
}
public String getUsername() {
return username;
}
public String getFullName() {
return fullName;
}
public boolean isPrivate() {
return isPrivate;
}
public String getProfilePicUrl() {
return profilePicUrl;
}
public String getHDProfilePicUrl() {
if (hdProfilePicUrlInfo == null) {
return getProfilePicUrl();
}
return hdProfilePicUrlInfo.getUrl();
}
public String getProfilePicId() {
return profilePicId;
}
public FriendshipStatus getFriendshipStatus() {
return friendshipStatus;
}
public void setFriendshipStatus(final FriendshipStatus friendshipStatus) {
this.friendshipStatus = friendshipStatus;
}
public boolean isVerified() {
return isVerified;
}
public boolean hasAnonymousProfilePicture() {
return hasAnonymousProfilePicture;
}
public boolean isUnpublished() {
return isUnpublished;
}
public boolean isFavorite() {
return isFavorite;
}
public boolean isDirectappInstalled() {
return isDirectappInstalled;
}
public boolean hasChaining() {
return hasChaining;
}
public String getReelAutoArchive() {
return reelAutoArchive;
}
public String getAllowedCommenterType() {
return allowedCommenterType;
}
public long getMediaCount() {
return mediaCount;
}
public long getFollowerCount() {
return followerCount;
}
public long getFollowingCount() {
return followingCount;
}
public long getFollowingTagCount() {
return followingTagCount;
}
public String getBiography() {
return biography;
}
public String getExternalUrl() {
return externalUrl;
}
public long getUsertagsCount() {
return usertagsCount;
}
public String getPublicEmail() {
return publicEmail;
}
public String getProfileContext() {
return profileContext;
}
public String getSocialContext() {
return socialContext;
}
public List<UserProfileContextLink> getProfileContextLinks() {
return profileContextLinksWithUserIds;
}
public String getFbId() {
return interopMessagingUserFbid;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
final User user = (User) o;
return pk == user.pk &&
isPrivate == user.isPrivate &&
isVerified == user.isVerified &&
hasAnonymousProfilePicture == user.hasAnonymousProfilePicture &&
isUnpublished == user.isUnpublished &&
isFavorite == user.isFavorite &&
isDirectappInstalled == user.isDirectappInstalled &&
mediaCount == user.mediaCount &&
followerCount == user.followerCount &&
followingCount == user.followingCount &&
followingTagCount == user.followingTagCount &&
usertagsCount == user.usertagsCount &&
Objects.equals(username, user.username) &&
Objects.equals(fullName, user.fullName) &&
Objects.equals(profilePicUrl, user.profilePicUrl) &&
Objects.equals(profilePicId, user.profilePicId) &&
Objects.equals(friendshipStatus, user.friendshipStatus) &&
Objects.equals(reelAutoArchive, user.reelAutoArchive) &&
Objects.equals(allowedCommenterType, user.allowedCommenterType) &&
Objects.equals(biography, user.biography) &&
Objects.equals(externalUrl, user.externalUrl) &&
Objects.equals(publicEmail, user.publicEmail);
}
@Override
public int hashCode() {
return Objects.hash(pk, username, fullName, isPrivate, profilePicUrl, profilePicId, friendshipStatus, isVerified, hasAnonymousProfilePicture,
isUnpublished, isFavorite, isDirectappInstalled, hasChaining, reelAutoArchive, allowedCommenterType, mediaCount,
followerCount, followingCount, followingTagCount, biography, externalUrl, usertagsCount, publicEmail);
}
} }

View File

@ -135,7 +135,7 @@ class DirectSettingsViewModel(
if (isAdmin) ACTION_REMOVE_ADMIN else ACTION_MAKE_ADMIN if (isAdmin) ACTION_REMOVE_ADMIN else ACTION_MAKE_ADMIN
)) ))
} }
val blocking: Boolean = user.friendshipStatus.blocking val blocking: Boolean = user.friendshipStatus?.blocking ?: false
options.add(Option( options.add(Option(
if (blocking) getString(R.string.unblock) else getString(R.string.block), if (blocking) getString(R.string.unblock) else getString(R.string.block),
if (blocking) ACTION_UNBLOCK else ACTION_BLOCK if (blocking) ACTION_UNBLOCK else ACTION_BLOCK
@ -144,7 +144,7 @@ class DirectSettingsViewModel(
// options.add(new Option<>(getString(R.string.report), ACTION_REPORT)); // options.add(new Option<>(getString(R.string.report), ACTION_REPORT));
val isGroup: Boolean? = threadManager.isGroup.value val isGroup: Boolean? = threadManager.isGroup.value
if (isGroup != null && isGroup) { if (isGroup != null && isGroup) {
val restricted: Boolean = user.friendshipStatus.isRestricted val restricted: Boolean = user.friendshipStatus?.isRestricted ?: false
options.add(Option( options.add(Option(
if (restricted) getString(R.string.unrestrict) else getString(R.string.restrict), if (restricted) getString(R.string.unrestrict) else getString(R.string.restrict),
if (restricted) ACTION_UNRESTRICT else ACTION_RESTRICT if (restricted) ACTION_UNRESTRICT else ACTION_RESTRICT

View File

@ -41,8 +41,8 @@ public class GraphQLService extends BaseService {
private GraphQLService() { private GraphQLService() {
repository = RetrofitFactory.INSTANCE repository = RetrofitFactory.INSTANCE
.getRetrofitWeb() .getRetrofitWeb()
.create(GraphQLRepository.class); .create(GraphQLRepository.class);
} }
public static GraphQLService getInstance() { public static GraphQLService getInstance() {
@ -309,6 +309,7 @@ public class GraphQLService extends BaseService {
userJson.getString("full_name"), userJson.getString("full_name"),
isPrivate, isPrivate,
userJson.getString("profile_pic_url_hd"), userJson.getString("profile_pic_url_hd"),
userJson.getBoolean("is_verified"),
null, null,
new FriendshipStatus( new FriendshipStatus(
userJson.optBoolean("followed_by_viewer"), userJson.optBoolean("followed_by_viewer"),
@ -322,7 +323,6 @@ public class GraphQLService extends BaseService {
userJson.optBoolean("restricted_by_viewer"), userJson.optBoolean("restricted_by_viewer"),
false false
), ),
userJson.getBoolean("is_verified"),
false, false,
false, false,
false, false,
@ -376,7 +376,7 @@ public class GraphQLService extends BaseService {
try { try {
final JSONObject body = new JSONObject(rawBody); final JSONObject body = new JSONObject(rawBody);
final JSONObject media = body.getJSONObject("graphql") final JSONObject media = body.getJSONObject("graphql")
.getJSONObject("shortcode_media"); .getJSONObject("shortcode_media");
callback.onSuccess(ResponseBodyUtils.parseGraphQLItem(media, null)); callback.onSuccess(ResponseBodyUtils.parseGraphQLItem(media, null));
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG, "onResponse", e); Log.e(TAG, "onResponse", e);