summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android')
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java53
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ComposeActivity.java17
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ContextActivity.java123
-rw-r--r--app/src/main/java/app/fedilab/android/activities/HashTagActivity.java274
-rw-r--r--app/src/main/java/app/fedilab/android/activities/LoginActivity.java29
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ProfileActivity.java52
-rw-r--r--app/src/main/java/app/fedilab/android/activities/SettingsActivity.java57
-rw-r--r--app/src/main/java/app/fedilab/android/activities/SettingsActivity.kt56
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java6
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonFiltersService.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Account.java28
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/Account.java17
-rw-r--r--app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java38
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/helper/SpannableHelper.java35
-rw-r--r--app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/AccountsReplyAdapter.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java100
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java13
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java133
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentSettingsCategories.java176
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentSettingsCategories.kt138
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonContext.java38
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java8
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java4
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java30
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/FiltersVM.java20
34 files changed, 1073 insertions, 435 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index 1f28b8bea..7e43d4d0f 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -697,7 +697,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getConnectedAccount(currentInstance, currentToken)
.observe(BaseMainActivity.this, mastodonAccount -> {
//Initialize static var
- if (mastodonAccount != null) {
+ if (mastodonAccount != null && currentAccount != null) {
currentAccount.mastodon_account = mastodonAccount;
displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
new Thread(() -> {
@@ -758,6 +758,57 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
}
}).start();
}
+ //Fetch recent used accounts
+ new Thread(() -> {
+ try {
+ List<BaseAccount> accounts = new Account(BaseMainActivity.this).getLastUsedAccounts();
+ Handler mainHandler = new Handler(Looper.getMainLooper());
+ Runnable myRunnable = () -> {
+ if (accounts != null && accounts.size() > 0) {
+ Helper.loadPP(this, headerMainBinding.otherAccount1, accounts.get(0));
+ headerMainBinding.otherAccount1.setVisibility(View.VISIBLE);
+ headerMainBinding.otherAccount1.setOnClickListener(v -> {
+ headerMenuOpen = false;
+ Toasty.info(BaseMainActivity.this, getString(R.string.toast_account_changed, "@" + accounts.get(0).mastodon_account.acct + "@" + accounts.get(0).instance), Toasty.LENGTH_LONG).show();
+ BaseMainActivity.currentToken = accounts.get(0).token;
+ BaseMainActivity.currentUserID = accounts.get(0).user_id;
+ api = accounts.get(0).api;
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(PREF_USER_TOKEN, accounts.get(0).token);
+ editor.commit();
+ //The user is now aut
+ //The user is now authenticated, it will be redirected to MainActivity
+ Intent mainActivity = new Intent(this, MainActivity.class);
+ startActivity(mainActivity);
+ finish();
+ });
+ if (accounts.size() > 1) {
+ Helper.loadPP(this, headerMainBinding.otherAccount2, accounts.get(1));
+ headerMainBinding.otherAccount2.setVisibility(View.VISIBLE);
+ headerMainBinding.otherAccount2.setOnClickListener(v -> {
+ headerMenuOpen = false;
+ Toasty.info(BaseMainActivity.this, getString(R.string.toast_account_changed, "@" + accounts.get(1).mastodon_account.acct + "@" + accounts.get(1).instance), Toasty.LENGTH_LONG).show();
+ BaseMainActivity.currentToken = accounts.get(1).token;
+ BaseMainActivity.currentUserID = accounts.get(1).user_id;
+ api = accounts.get(1).api;
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(PREF_USER_TOKEN, accounts.get(1).token);
+ editor.commit();
+ //The user is now aut
+ //The user is now authenticated, it will be redirected to MainActivity
+ Intent mainActivity = new Intent(this, MainActivity.class);
+ startActivity(mainActivity);
+ finish();
+ });
+ }
+ }
+ };
+ mainHandler.post(myRunnable);
+
+ } catch (DBException e) {
+ e.printStackTrace();
+ }
+ }).start();
}
protected abstract void rateThisApp();
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
index 2f2b870f8..e7ba4af89 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -81,6 +84,9 @@ public class BaseActivity extends AppCompatActivity {
break;
case "BLACK":
setTheme(R.style.BlackAppTheme);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
currentThemeId = R.style.BlackAppTheme;
break;
case "DRACULA":
@@ -115,6 +121,9 @@ public class BaseActivity extends AppCompatActivity {
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
setTheme(R.style.BlackAppTheme);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
currentThemeId = R.style.BlackAppTheme;
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
index 48b51a25b..734121bf5 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -74,6 +77,9 @@ public class BaseAlertDialogActivity extends AppCompatActivity {
setTheme(R.style.SolarizedAlertDialog);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAlertDialog);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseAlertDialogActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAlertDialog);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
index e8f0111e4..2776d2ec2 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -73,6 +76,9 @@ public class BaseBarActivity extends AppCompatActivity {
setTheme(R.style.SolarizedAppThemeBar);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAppThemeBar);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseBarActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAppThemeBar);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
index 77f2df730..0f2668649 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -73,6 +76,9 @@ public class BaseTransparentActivity extends AppCompatActivity {
setTheme(R.style.TransparentSolarized);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.TransparentBlack);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseTransparentActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.TransparentBlack);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
index c9cedf5b8..1688d292e 100644
--- a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
@@ -402,8 +402,8 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
return true;
}
- private void onRetrieveContact(PopupContactBinding binding, List<app.fedilab.android.client.entities.api.Account> accounts) {
- binding.loader.setVisibility(View.GONE);
+ private void onRetrieveContact(PopupContactBinding popupContactBinding, List<app.fedilab.android.client.entities.api.Account> accounts) {
+ popupContactBinding.loader.setVisibility(View.GONE);
if (accounts == null) {
accounts = new ArrayList<>();
}
@@ -413,8 +413,9 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
checkedValues.add(composeAdapter.getLastComposeContent().contains("@" + account.acct));
}
AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(contacts, checkedValues);
- binding.lvAccountsSearch.setAdapter(contactAdapter);
- binding.lvAccountsSearch.setLayoutManager(new LinearLayoutManager(ComposeActivity.this));
+ contactAdapter.actionDone = ComposeActivity.this;
+ popupContactBinding.lvAccountsSearch.setAdapter(contactAdapter);
+ popupContactBinding.lvAccountsSearch.setLayoutManager(new LinearLayoutManager(ComposeActivity.this));
}
@Override
@@ -869,10 +870,14 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
private boolean canBeSent(StatusDraft statusDraft) {
- if (statusDraft == null || statusDraft.statusDraftList == null || statusDraft.statusDraftList.isEmpty()) {
+ if (statusDraft == null) {
+ return false;
+ }
+ List<Status> statuses = statusDraft.statusDraftList;
+ if (statuses == null || statuses.size() == 0) {
return false;
}
- Status statusCheck = statusDraft.statusDraftList.get(0);
+ Status statusCheck = statuses.get(0);
if (statusCheck == null) {
return false;
}
diff --git a/app/src/main/java/app/fedilab/android/activities/ContextActivity.java b/app/src/main/java/app/fedilab/android/activities/ContextActivity.java
index 243e90b07..5a87a62de 100644
--- a/app/src/main/java/app/fedilab/android/activities/ContextActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/ContextActivity.java
@@ -18,6 +18,7 @@ package app.fedilab.android.activities;
import static app.fedilab.android.BaseMainActivity.currentAccount;
import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
@@ -33,6 +34,9 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R;
import app.fedilab.android.client.entities.api.Status;
@@ -43,19 +47,22 @@ import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.MastodonHelper;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext;
import app.fedilab.android.viewmodel.mastodon.StatusesVM;
+import es.dmoral.toasty.Toasty;
-public class ContextActivity extends BaseActivity {
+public class ContextActivity extends BaseActivity implements FragmentMastodonContext.FirstMessage {
public static boolean expand;
public static boolean displayCW;
public static Resources.Theme theme;
Fragment currentFragment;
+ private Status firstMessage;
+ private String remote_instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- app.fedilab.android.databinding.ActivityConversationBinding binding = ActivityConversationBinding.inflate(getLayoutInflater());
+ ActivityConversationBinding binding = ActivityConversationBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
ActionBar actionBar = getSupportActionBar();
@@ -75,8 +82,10 @@ public class ContextActivity extends BaseActivity {
Bundle b = getIntent().getExtras();
displayCW = sharedpreferences.getBoolean(getString(R.string.SET_EXPAND_CW), false);
Status focusedStatus = null; // or other values
- if (b != null)
+ if (b != null) {
focusedStatus = (Status) b.getSerializable(Helper.ARG_STATUS);
+ remote_instance = b.getString(Helper.ARG_REMOTE_INSTANCE, null);
+ }
if (focusedStatus == null || currentAccount == null || currentAccount.mastodon_account == null) {
finish();
return;
@@ -84,29 +93,34 @@ public class ContextActivity extends BaseActivity {
MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account);
Bundle bundle = new Bundle();
bundle.putSerializable(Helper.ARG_STATUS, focusedStatus);
- currentFragment = Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_content_main, new FragmentMastodonContext(), bundle, null, null);
- StatusesVM timelinesVM = new ViewModelProvider(ContextActivity.this).get(StatusesVM.class);
- timelinesVM.getStatus(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, focusedStatus.id).observe(ContextActivity.this, status -> {
- if (status != null) {
- StatusCache statusCache = new StatusCache();
- statusCache.instance = BaseMainActivity.currentInstance;
- statusCache.user_id = BaseMainActivity.currentUserID;
- statusCache.status = status;
- statusCache.status_id = status.id;
- //Update cache
- new Thread(() -> {
- try {
- new StatusCache(getApplication()).updateIfExists(statusCache);
- Handler mainHandler = new Handler(Looper.getMainLooper());
- //Update UI
- Runnable myRunnable = () -> sendAction(ContextActivity.this, Helper.ARG_STATUS_ACTION, status, null);
- mainHandler.post(myRunnable);
- } catch (DBException e) {
- e.printStackTrace();
- }
- }).start();
- }
- });
+ bundle.putString(Helper.ARG_REMOTE_INSTANCE, remote_instance);
+ FragmentMastodonContext fragmentMastodonContext = new FragmentMastodonContext();
+ fragmentMastodonContext.firstMessage = this;
+ currentFragment = Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_content_main, fragmentMastodonContext, bundle, null, null);
+ if (remote_instance == null) {
+ StatusesVM timelinesVM = new ViewModelProvider(ContextActivity.this).get(StatusesVM.class);
+ timelinesVM.getStatus(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, focusedStatus.id).observe(ContextActivity.this, status -> {
+ if (status != null) {
+ StatusCache statusCache = new StatusCache();
+ statusCache.instance = BaseMainActivity.currentInstance;
+ statusCache.user_id = BaseMainActivity.currentUserID;
+ statusCache.status = status;
+ statusCache.status_id = status.id;
+ //Update cache
+ new Thread(() -> {
+ try {
+ new StatusCache(getApplication()).updateIfExists(statusCache);
+ Handler mainHandler = new Handler(Looper.getMainLooper());
+ //Update UI
+ Runnable myRunnable = () -> sendAction(ContextActivity.this, Helper.ARG_STATUS_ACTION, status, null);
+ mainHandler.post(myRunnable);
+ } catch (DBException e) {
+ e.printStackTrace();
+ }
+ }).start();
+ }
+ });
+ }
}
@@ -126,6 +140,18 @@ public class ContextActivity extends BaseActivity {
} else {
itemDisplayCW.setIcon(R.drawable.ic_outline_remove_red_eye_24);
}
+ MenuItem action_remote = menu.findItem(R.id.action_remote);
+ if (remote_instance != null) {
+ action_remote.setVisible(false);
+ } else {
+ if (firstMessage != null && !firstMessage.visibility.equalsIgnoreCase("direct") && !firstMessage.visibility.equalsIgnoreCase("private")) {
+ Pattern pattern = Helper.statusIdInUrl;
+ Matcher matcher = pattern.matcher(firstMessage.uri);
+ action_remote.setVisible(matcher.find());
+ } else {
+ action_remote.setVisible(false);
+ }
+ }
return true;
}
@@ -151,8 +177,53 @@ public class ContextActivity extends BaseActivity {
((FragmentMastodonContext) currentFragment).refresh();
}
invalidateOptionsMenu();
+ } else if (item.getItemId() == R.id.action_remote) {
+
+ if (firstMessage == null) {
+ Toasty.warning(ContextActivity.this, getString(R.string.toast_try_later), Toasty.LENGTH_SHORT).show();
+ return true;
+ }
+ if (firstMessage.account.acct != null) {
+ String[] splitAcct = firstMessage.account.acct.split("@");
+ String instance;
+ if (splitAcct.length > 1) {
+ instance = splitAcct[1];
+ } else {
+ Toasty.info(ContextActivity.this, getString(R.string.toast_on_your_instance), Toasty.LENGTH_SHORT).show();
+ return true;
+ }
+ Pattern pattern = Helper.statusIdInUrl;
+ Matcher matcher = pattern.matcher(firstMessage.uri);
+ String remoteId = null;
+ if (matcher.find()) {
+ remoteId = matcher.group(1);
+ }
+ if (remoteId != null) {
+ StatusesVM statusesVM = new ViewModelProvider(ContextActivity.this).get(StatusesVM.class);
+ statusesVM.getStatus(instance, null, remoteId).observe(ContextActivity.this, status -> {
+ if (status != null) {
+ Intent intentContext = new Intent(ContextActivity.this, ContextActivity.class);
+ intentContext.putExtra(Helper.ARG_STATUS, status);
+ intentContext.putExtra(Helper.ARG_REMOTE_INSTANCE, instance);
+ intentContext.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intentContext);
+ } else {
+ Toasty.warning(ContextActivity.this, getString(R.string.toast_error_fetch_message), Toasty.LENGTH_SHORT).show();
+ }
+ });
+ } else {
+ Toasty.warning(ContextActivity.this, getString(R.string.toast_error_fetch_message), Toasty.LENGTH_SHORT).show();
+ }
+ } else {
+ Toasty.warning(ContextActivity.this, getString(R.string.toast_error_fetch_message), Toasty.LENGTH_SHORT).show();
+ }
}
return true;
}
+ @Override
+ public void get(Status status) {
+ firstMessage = status;
+ invalidateOptionsMenu();
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java
index d2b5d1c97..7bf49af50 100644
--- a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java
@@ -26,6 +26,7 @@ import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
@@ -56,11 +57,15 @@ public class HashTagActivity extends BaseActivity {
public static int position;
private String tag;
- private boolean pinnedTag;
- private boolean followedTag;
- private boolean mutedTag;
+ private String stripTag;
+ private Boolean pinnedTag;
+ private Boolean followedTag;
+ private Boolean mutedTag;
private TagVM tagVM;
private Filter fedilabFilter;
+ private Filter.KeywordsAttributes keyword;
+ private PinnedTimeline pinnedTimeline;
+ private Pinned pinned;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -75,9 +80,10 @@ public class HashTagActivity extends BaseActivity {
}
if (tag == null)
finish();
- pinnedTag = false;
- followedTag = false;
- mutedTag = false;
+ pinnedTag = null;
+ followedTag = null;
+ mutedTag = null;
+ stripTag = tag.replaceAll("#", "");
setSupportActionBar(binding.toolbar);
ActionBar actionBar = getSupportActionBar();
//Remove title
@@ -91,7 +97,7 @@ public class HashTagActivity extends BaseActivity {
}
tagVM = new ViewModelProvider(HashTagActivity.this).get(TagVM.class);
- tagVM.getTag(MainActivity.currentInstance, MainActivity.currentToken, tag).observe(this, returnedTag -> {
+ tagVM.getTag(MainActivity.currentInstance, MainActivity.currentToken, stripTag).observe(this, returnedTag -> {
if (returnedTag != null) {
followedTag = returnedTag.following;
invalidateOptionsMenu();
@@ -100,19 +106,24 @@ public class HashTagActivity extends BaseActivity {
ReorderVM reorderVM = new ViewModelProvider(HashTagActivity.this).get(ReorderVM.class);
reorderVM.getAllPinned().observe(HashTagActivity.this, pinned -> {
if (pinned != null) {
+ this.pinned = pinned;
+ pinnedTag = false;
if (pinned.pinnedTimelines != null) {
for (PinnedTimeline pinnedTimeline : pinned.pinnedTimelines) {
if (pinnedTimeline.tagTimeline != null) {
- if (pinnedTimeline.tagTimeline.name.equalsIgnoreCase(tag)) {
+ if (pinnedTimeline.tagTimeline.name.equalsIgnoreCase(stripTag)) {
+ this.pinnedTimeline = pinnedTimeline;
pinnedTag = true;
- invalidateOptionsMenu();
+ break;
}
}
}
+ invalidateOptionsMenu();
}
}