Add follow instance in profile
This commit is contained in:
parent
2471481ccf
commit
4e3387e214
|
@ -58,11 +58,15 @@ import com.bumptech.glide.request.RequestOptions;
|
||||||
import com.bumptech.glide.request.target.SimpleTarget;
|
import com.bumptech.glide.request.target.SimpleTarget;
|
||||||
import com.bumptech.glide.request.transition.Transition;
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
|
||||||
import fr.gouv.etalab.mastodon.R;
|
import fr.gouv.etalab.mastodon.R;
|
||||||
|
@ -76,6 +80,7 @@ import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||||
import fr.gouv.etalab.mastodon.client.Entities.Account;
|
import fr.gouv.etalab.mastodon.client.Entities.Account;
|
||||||
import fr.gouv.etalab.mastodon.client.Entities.Error;
|
import fr.gouv.etalab.mastodon.client.Entities.Error;
|
||||||
import fr.gouv.etalab.mastodon.client.Entities.Status;
|
import fr.gouv.etalab.mastodon.client.Entities.Status;
|
||||||
|
import fr.gouv.etalab.mastodon.client.HttpsConnection;
|
||||||
import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
|
import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
|
||||||
import fr.gouv.etalab.mastodon.fragments.DisplayAccountsFragment;
|
import fr.gouv.etalab.mastodon.fragments.DisplayAccountsFragment;
|
||||||
import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
|
import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
|
||||||
|
@ -89,6 +94,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface;
|
||||||
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
|
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
|
||||||
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
|
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
|
||||||
|
import fr.gouv.etalab.mastodon.sqlite.InstancesDAO;
|
||||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||||
import fr.gouv.etalab.mastodon.sqlite.TempMuteDAO;
|
import fr.gouv.etalab.mastodon.sqlite.TempMuteDAO;
|
||||||
|
|
||||||
|
@ -301,10 +307,15 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
|
||||||
}
|
}
|
||||||
final String[] stringArrayConf;
|
final String[] stringArrayConf;
|
||||||
final boolean isOwner = account.getId().equals(userId);
|
final boolean isOwner = account.getId().equals(userId);
|
||||||
|
String[] splitAcct = account.getAcct().split("@");
|
||||||
|
|
||||||
|
if( splitAcct.length <= 1)
|
||||||
|
popup.getMenu().findItem(R.id.action_follow_instance).setVisible(false);
|
||||||
if( isOwner) {
|
if( isOwner) {
|
||||||
popup.getMenu().findItem(R.id.action_block).setVisible(false);
|
popup.getMenu().findItem(R.id.action_block).setVisible(false);
|
||||||
popup.getMenu().findItem(R.id.action_mute).setVisible(false);
|
popup.getMenu().findItem(R.id.action_mute).setVisible(false);
|
||||||
popup.getMenu().findItem(R.id.action_mention).setVisible(false);
|
popup.getMenu().findItem(R.id.action_mention).setVisible(false);
|
||||||
|
popup.getMenu().findItem(R.id.action_follow_instance).setVisible(false);
|
||||||
stringArrayConf = getResources().getStringArray(R.array.more_action_owner_confirm);
|
stringArrayConf = getResources().getStringArray(R.array.more_action_owner_confirm);
|
||||||
}else {
|
}else {
|
||||||
popup.getMenu().findItem(R.id.action_block).setVisible(true);
|
popup.getMenu().findItem(R.id.action_block).setVisible(true);
|
||||||
|
@ -316,6 +327,38 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
AlertDialog.Builder builderInner;
|
AlertDialog.Builder builderInner;
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
|
|
||||||
|
case R.id.action_follow_instance:
|
||||||
|
String finalInstanceName = splitAcct[1];
|
||||||
|
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
List<String> instance = new InstancesDAO(ShowAccountActivity.this, db).getInstanceByName(finalInstanceName);
|
||||||
|
if( instance != null && instance.size() > 0 ){
|
||||||
|
Toast.makeText(getApplicationContext(), R.string.toast_instance_already_added,Toast.LENGTH_LONG).show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
new Thread(new Runnable(){
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String response = new HttpsConnection(ShowAccountActivity.this).get("https://" + finalInstanceName + "/api/v1/timelines/public?local=true", 10, null, null);
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
new InstancesDAO(ShowAccountActivity.this, db).insertInstance(finalInstanceName);
|
||||||
|
Toast.makeText(getApplicationContext(), R.string.toast_instance_followed,Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (final Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
Toast.makeText(getApplicationContext(), R.string.toast_instance_unavailable,Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
return true;
|
||||||
case R.id.action_show_pinned:
|
case R.id.action_show_pinned:
|
||||||
showPinned = !showPinned;
|
showPinned = !showPinned;
|
||||||
if( tabLayout.getTabAt(0) != null)
|
if( tabLayout.getTabAt(0) != null)
|
||||||
|
|
|
@ -31,4 +31,9 @@
|
||||||
android:title="@string/more_action_7"
|
android:title="@string/more_action_7"
|
||||||
android:icon="@drawable/ic_chat_bubble_outline"
|
android:icon="@drawable/ic_chat_bubble_outline"
|
||||||
app:showAsAction="ifRoom" />
|
app:showAsAction="ifRoom" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_follow_instance"
|
||||||
|
android:title="@string/follow_instance"
|
||||||
|
android:icon="@drawable/ic_public_world"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -551,6 +551,9 @@
|
||||||
<string name="crash_title">Mastalab has stopped :(</string>
|
<string name="crash_title">Mastalab has stopped :(</string>
|
||||||
<string name="crash_message">You can send me by email the crash report. It will help to fix it :)\n\nYou can add additional content. Thank you!</string>
|
<string name="crash_message">You can send me by email the crash report. It will help to fix it :)\n\nYou can add additional content. Thank you!</string>
|
||||||
<string name="send_crash_report">Ask for sending crash reports by email?</string>
|
<string name="send_crash_report">Ask for sending crash reports by email?</string>
|
||||||
|
<string name="follow_instance">Follow instance</string>
|
||||||
|
<string name="toast_instance_already_added">You already follow this instance!</string>
|
||||||
|
<string name="toast_instance_followed">The instance is followed!</string>
|
||||||
<string-array translatable="false" name="proxy_type_choice">
|
<string-array translatable="false" name="proxy_type_choice">
|
||||||
<item>HTTP</item>
|
<item>HTTP</item>
|
||||||
<item>SOCKS</item>
|
<item>SOCKS</item>
|
||||||
|
|
Loading…
Reference in New Issue