diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java index 40444a58..1c59671b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java @@ -130,8 +130,19 @@ public class ProfileLoader extends AsyncTask { database.storeUser(user); if (MODE == ACTION_FOLLOW) { - isFollowing = !isFollowing; - user = mTwitter.followAction(UID, isFollowing); + if (user.isLocked()) { + if (isFollowing) { + isFollowing = false; + user = mTwitter.followAction(UID, false); + } else if (user.followRequested()) { + user = mTwitter.followAction(UID, false); + } else { + user = mTwitter.followAction(UID, true); + } + } else { + isFollowing = !isFollowing; + user = mTwitter.followAction(UID, isFollowing); + } publishProgress(GET_USER); } else if (MODE == ACTION_BLOCK) { isBlocked = !isBlocked; @@ -279,11 +290,12 @@ public class ProfileLoader extends AsyncTask { favReload.setRefreshing(false); if (MODE == ACTION_FOLLOW) { - if (isFollowing) - Toast.makeText(ui.get(), R.string.followed, Toast.LENGTH_SHORT).show(); - else - Toast.makeText(ui.get(), R.string.unfollowed, Toast.LENGTH_SHORT).show(); - + if (!user.isLocked()) { + if (isFollowing) + Toast.makeText(ui.get(), R.string.followed, Toast.LENGTH_SHORT).show(); + else + Toast.makeText(ui.get(), R.string.unfollowed, Toast.LENGTH_SHORT).show(); + } } else if (MODE == ACTION_BLOCK) { if (isBlocked) Toast.makeText(ui.get(), R.string.blocked, Toast.LENGTH_SHORT).show(); @@ -304,7 +316,7 @@ public class ProfileLoader extends AsyncTask { } } if (!isHome) { - ui.get().setConnection(isFollowing, isMuted, isBlocked, canDm); + ui.get().setConnection(isFollowing, isMuted, isBlocked, canDm, user.followRequested()); ui.get().invalidateOptionsMenu(); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java index 3ef1eefa..9e4ba6fd 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java @@ -11,6 +11,7 @@ public class TwitterUser { private final boolean isVerified; private final boolean isLocked; + private final boolean isFollowReqSent; private final int following; private final int follower; @@ -41,11 +42,13 @@ public class TwitterUser { follower = user.getFollowersCount(); tweetCount = user.getStatusesCount(); favorCount = user.getFavouritesCount(); + isFollowReqSent = user.isFollowRequestSent(); } - public TwitterUser(long userID, String username, String screenname, String profileImg, - String bio, String location, boolean isVerified, boolean isLocked, String link, - String bannerImg, long created, int following, int follower, int tweetCount, int favorCount) { + public TwitterUser(long userID, String username, String screenname, String profileImg, String bio, String location, + boolean isVerified, boolean isLocked, boolean isFollowReqSent, String link, String bannerImg, + long created, int following, int follower, int tweetCount, int favorCount) { + this.userID = userID; this.username = username; this.screenname = screenname; @@ -61,6 +64,7 @@ public class TwitterUser { this.follower = follower; this.tweetCount = tweetCount; this.favorCount = favorCount; + this.isFollowReqSent = isFollowReqSent; } /** @@ -162,6 +166,15 @@ public class TwitterUser { return isLocked; } + /** + * requested follow + * + * @return if a follow was requested + */ + public boolean followRequested() { + return isFollowReqSent; + } + /** * get following count * diff --git a/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java b/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java index 575b01ad..7e3f710f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java @@ -21,15 +21,16 @@ public class DatabaseAdapter { public static final int LIMIT = 100; // DATABASE ENTRY LIMIT - private static final int FAV_MASK = 1; // FAVORITE MASK - private static final int RTW_MASK = 1 << 1; // RETWEET MASK - private static final int HOM_MASK = 1 << 2; // HOME TWEET MASK - private static final int MEN_MASK = 1 << 3; // MENTION MASK - private static final int UTW_MASK = 1 << 4; // USER TWEETS - private static final int RPL_MASK = 1 << 5; // TWEET ANSWERS + private static final int FAV_MASK = 1; // FAVORITE MASK + private static final int RTW_MASK = 1 << 1; // RETWEET MASK + private static final int HOM_MASK = 1 << 2; // HOME TWEET MASK + private static final int MEN_MASK = 1 << 3; // MENTION MASK + private static final int UTW_MASK = 1 << 4; // USER TWEETS + private static final int RPL_MASK = 1 << 5; // TWEET ANSWERS - private static final int VER_MASK = 1; // USER VERIFIED MASK - private static final int LCK_MASK = 1 << 1; // USER LOCKED MASK + private static final int VER_MASK = 1; // USER VERIFIED MASK + private static final int LCK_MASK = 1 << 1; // USER LOCKED MASK + private static final int FRQ_MASK = 1 << 2; // USER REQUEST FOLLOW private AppDatabase dataHelper; private long homeId; @@ -568,8 +569,9 @@ public class DatabaseAdapter { boolean isVerified = (userRegister & VER_MASK) > 0; boolean isLocked = (userRegister & LCK_MASK) > 0; + boolean isReq = (userRegister & FRQ_MASK) > 0; return new TwitterUser(userId, username, screenname, profileImg, bio, location, isVerified, - isLocked, link, banner, createdAt, following, follower, tCount, fCount); + isLocked, isReq, link, banner, createdAt, following, follower, tCount, fCount); } @@ -580,6 +582,9 @@ public class DatabaseAdapter { userRegister |= VER_MASK; if (user.isLocked()) userRegister |= LCK_MASK; + if (user.followRequested()) + userRegister |= FRQ_MASK; + userColumn.put("userID", user.getId()); userColumn.put("username", user.getUsername()); userColumn.put("scrname", user.getScreenname()); diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java index 0a8d4305..9e8bde7d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -51,7 +51,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, private View lastTab, tweetIndicator, favorIndicator; private TabHost mTab; private NumberFormat formatter; - private boolean home, isFollowing, isBlocked, isMuted, canDm; + private boolean home, isFollowing, isBlocked, isMuted, canDm, requested; private String username; private long userId; private int tabIndex = 0; @@ -176,6 +176,9 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, if (isFollowing) { followIcon.setIcon(R.drawable.follow_enabled); followIcon.setTitle(R.string.unfollow); + } else if (requested) { + followIcon.setIcon(R.drawable.follow_requested); + followIcon.setTitle(R.string.follow_requested); } else { followIcon.setIcon(R.drawable.follow); followIcon.setTitle(R.string.follow); @@ -352,6 +355,15 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, } + public void setConnection(boolean isFollowing, boolean isMuted, boolean isBlocked, boolean canDm, boolean requested) { + this.isFollowing = isFollowing; + this.isMuted = isMuted; + this.isBlocked = isBlocked; + this.canDm = canDm; + this.requested = requested; + } + + private void openTweet(long tweetId, long userId, String username) { Intent intent = new Intent(this, TweetDetail.class); intent.putExtra("tweetID", tweetId); @@ -388,14 +400,6 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener, } - public void setConnection(boolean isFollowing, boolean isMuted, boolean isBlocked, boolean canDm) { - this.isFollowing = isFollowing; - this.isMuted = isMuted; - this.isBlocked = isBlocked; - this.canDm = canDm; - } - - public void imageClick(String link) { Intent image = new Intent(this, ImageDetail.class); image.putExtra("link", new String[]{link}); diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index de0bec6a..a8736c62 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -24,7 +24,7 @@ favorisieren Hintergrund Tweet löschen? - Verbindung fehlgeschlagen + Keine Internetverbindung! PIN eingeben! PIN eingefügt! Falsches Format! @@ -98,4 +98,5 @@ Tweet wurde schon versendet! Direktnachricht länge überschritten! Authentifikation fehlgeschlagen! + warten auf Bestätigung \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c052dcc..c9516b03 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -106,4 +106,5 @@ Duplicate Status! direct message text is over the limit! failed to authenticate! + follow requested \ No newline at end of file