mirror of
https://codeberg.org/tom79/Fedilab.git
synced 2024-12-22 16:50:04 +02:00
Fix hashtags
This commit is contained in:
parent
336fe936e8
commit
318b869b6a
4 changed files with 67 additions and 22 deletions
|
@ -70,17 +70,26 @@ public class HashTagActivity extends BaseActivity {
|
||||||
private Filter.KeywordsAttributes keyword;
|
private Filter.KeywordsAttributes keyword;
|
||||||
private PinnedTimeline pinnedTimeline;
|
private PinnedTimeline pinnedTimeline;
|
||||||
private Pinned pinned;
|
private Pinned pinned;
|
||||||
|
private ActivityHashtagBinding binding;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
ActivityHashtagBinding binding = ActivityHashtagBinding.inflate(getLayoutInflater());
|
binding = ActivityHashtagBinding.inflate(getLayoutInflater());
|
||||||
|
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
Bundle b = getIntent().getExtras();
|
Bundle args = getIntent().getExtras();
|
||||||
if (b != null) {
|
if (args != null) {
|
||||||
tag = b.getString(Helper.ARG_SEARCH_KEYWORD, null);
|
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
|
||||||
|
new CachedBundle(HashTagActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
|
||||||
|
} else {
|
||||||
|
initializeAfterBundle(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeAfterBundle(Bundle bundle) {
|
||||||
|
if( bundle != null) {
|
||||||
|
tag = bundle.getString(Helper.ARG_SEARCH_KEYWORD, null);
|
||||||
}
|
}
|
||||||
if (tag == null)
|
if (tag == null)
|
||||||
finish();
|
finish();
|
||||||
|
@ -147,10 +156,10 @@ public class HashTagActivity extends BaseActivity {
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundleFragment = new Bundle();
|
||||||
bundle.putSerializable(Helper.ARG_TIMELINE_TYPE, Timeline.TimeLineEnum.TAG);
|
bundleFragment.putSerializable(Helper.ARG_TIMELINE_TYPE, Timeline.TimeLineEnum.TAG);
|
||||||
bundle.putString(Helper.ARG_SEARCH_KEYWORD, tag);
|
bundleFragment.putString(Helper.ARG_SEARCH_KEYWORD, tag);
|
||||||
Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_tags, new FragmentMastodonTimeline(), bundle, null, null);
|
Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_tags, new FragmentMastodonTimeline(), bundleFragment, null, null);
|
||||||
binding.compose.setOnClickListener(v -> {
|
binding.compose.setOnClickListener(v -> {
|
||||||
Intent intentToot = new Intent(HashTagActivity.this, ComposeActivity.class);
|
Intent intentToot = new Intent(HashTagActivity.this, ComposeActivity.class);
|
||||||
StatusDraft statusDraft = new StatusDraft();
|
StatusDraft statusDraft = new StatusDraft();
|
||||||
|
|
|
@ -68,6 +68,26 @@ public class CachedBundle {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public long insertAccountBundle(Account account, BaseAccount currentUser) throws DBException {
|
||||||
|
if (db == null) {
|
||||||
|
throw new DBException("db is null. Wrong initialization.");
|
||||||
|
}
|
||||||
|
ContentValues valuesAccount = new ContentValues();
|
||||||
|
Bundle bundleAccount = new Bundle();
|
||||||
|
if (account != null) {
|
||||||
|
bundleAccount.putSerializable(Helper.ARG_ACCOUNT, account);
|
||||||
|
valuesAccount.put(Sqlite.COL_BUNDLE, serializeBundle(bundleAccount));
|
||||||
|
valuesAccount.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
|
||||||
|
valuesAccount.put(Sqlite.COL_TARGET_ID, account.id);
|
||||||
|
valuesAccount.put(Sqlite.COL_USER_ID, currentUser.user_id);
|
||||||
|
valuesAccount.put(Sqlite.COL_INSTANCE, currentUser.instance);
|
||||||
|
valuesAccount.put(Sqlite.COL_TYPE, CacheType.ACCOUNT.getValue());
|
||||||
|
removeIntent(currentUser, account.id);
|
||||||
|
return db.insertOrThrow(Sqlite.TABLE_INTENT, null, valuesAccount);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert a bundle in db
|
* Insert a bundle in db
|
||||||
*
|
*
|
||||||
|
|
|
@ -279,19 +279,23 @@ public class SpannableHelper {
|
||||||
public void onClick(@NonNull View textView) {
|
public void onClick(@NonNull View textView) {
|
||||||
textView.setTag(CLICKABLE_SPAN);
|
textView.setTag(CLICKABLE_SPAN);
|
||||||
Intent intent;
|
Intent intent;
|
||||||
Bundle b;
|
Bundle args;
|
||||||
if (word.startsWith("#")) {
|
if (word.startsWith("#")) {
|
||||||
intent = new Intent(context, HashTagActivity.class);
|
intent = new Intent(context, HashTagActivity.class);
|
||||||
b = new Bundle();
|
args = new Bundle();
|
||||||
b.putString(Helper.ARG_SEARCH_KEYWORD, word.trim());
|
args.putString(Helper.ARG_SEARCH_KEYWORD, word.trim());
|
||||||
intent.putExtras(b);
|
new CachedBundle(context).insertBundle(args, currentAccount, bundleId -> {
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
|
||||||
|
intent.putExtras(bundle);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
});
|
||||||
|
|
||||||
} else if (word.startsWith("@")) {
|
} else if (word.startsWith("@")) {
|
||||||
intent = new Intent(context, ProfileActivity.class);
|
intent = new Intent(context, ProfileActivity.class);
|
||||||
b = new Bundle();
|
args = new Bundle();
|
||||||
Mention targetedMention = null;
|
Mention targetedMention = null;
|
||||||
|
|
||||||
for (Mention mention : mentions) {
|
for (Mention mention : mentions) {
|
||||||
if (word.compareToIgnoreCase("@" + mention.username) == 0) {
|
if (word.compareToIgnoreCase("@" + mention.username) == 0) {
|
||||||
targetedMention = mention;
|
targetedMention = mention;
|
||||||
|
@ -299,13 +303,17 @@ public class SpannableHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (targetedMention != null) {
|
if (targetedMention != null) {
|
||||||
b.putString(Helper.ARG_USER_ID, targetedMention.id);
|
args.putString(Helper.ARG_USER_ID, targetedMention.id);
|
||||||
} else {
|
} else {
|
||||||
b.putString(Helper.ARG_MENTION, word);
|
args.putString(Helper.ARG_MENTION, word);
|
||||||
}
|
}
|
||||||
intent.putExtras(b);
|
new CachedBundle(context).insertBundle(args, currentAccount, bundleId -> {
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
|
||||||
|
intent.putExtras(bundle);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ package app.fedilab.android.mastodon.viewmodel.mastodon;
|
||||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
import static app.fedilab.android.BaseMainActivity.currentAccount;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -30,6 +32,7 @@ import java.util.List;
|
||||||
|
|
||||||
import app.fedilab.android.R;
|
import app.fedilab.android.R;
|
||||||
import app.fedilab.android.activities.MainActivity;
|
import app.fedilab.android.activities.MainActivity;
|
||||||
|
import app.fedilab.android.mastodon.activities.ProfileActivity;
|
||||||
import app.fedilab.android.mastodon.client.endpoints.MastodonAccountsService;
|
import app.fedilab.android.mastodon.client.endpoints.MastodonAccountsService;
|
||||||
import app.fedilab.android.mastodon.client.entities.api.Account;
|
import app.fedilab.android.mastodon.client.entities.api.Account;
|
||||||
import app.fedilab.android.mastodon.client.entities.api.Accounts;
|
import app.fedilab.android.mastodon.client.entities.api.Accounts;
|
||||||
|
@ -52,6 +55,7 @@ import app.fedilab.android.mastodon.client.entities.api.Suggestions;
|
||||||
import app.fedilab.android.mastodon.client.entities.api.Tag;
|
import app.fedilab.android.mastodon.client.entities.api.Tag;
|
||||||
import app.fedilab.android.mastodon.client.entities.api.Token;
|
import app.fedilab.android.mastodon.client.entities.api.Token;
|
||||||
import app.fedilab.android.mastodon.client.entities.app.BaseAccount;
|
import app.fedilab.android.mastodon.client.entities.app.BaseAccount;
|
||||||
|
import app.fedilab.android.mastodon.client.entities.app.CachedBundle;
|
||||||
import app.fedilab.android.mastodon.client.entities.app.MutedAccounts;
|
import app.fedilab.android.mastodon.client.entities.app.MutedAccounts;
|
||||||
import app.fedilab.android.mastodon.client.entities.app.StatusCache;
|
import app.fedilab.android.mastodon.client.entities.app.StatusCache;
|
||||||
import app.fedilab.android.mastodon.exception.DBException;
|
import app.fedilab.android.mastodon.exception.DBException;
|
||||||
|
@ -342,6 +346,7 @@ public class AccountsVM extends AndroidViewModel {
|
||||||
Response<Account> accountResponse = accountCall.execute();
|
Response<Account> accountResponse = accountCall.execute();
|
||||||
if (accountResponse.isSuccessful()) {
|
if (accountResponse.isSuccessful()) {
|
||||||
account = accountResponse.body();
|
account = accountResponse.body();
|
||||||
|
new CachedBundle(getApplication().getApplicationContext()).insertAccountBundle(account, currentAccount);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -1073,6 +1078,9 @@ public class AccountsVM extends AndroidViewModel {
|
||||||
Response<List<Account>> searchResponse = searchCall.execute();
|
Response<List<Account>> searchResponse = searchCall.execute();
|
||||||
if (searchResponse.isSuccessful()) {
|
if (searchResponse.isSuccessful()) {
|
||||||
accountList = searchResponse.body();
|
accountList = searchResponse.body();
|
||||||
|
if(accountList != null && accountList.size() > 0 ) {
|
||||||
|
new CachedBundle(getApplication().getApplicationContext()).insertAccountBundle(accountList.get(0), currentAccount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
Loading…
Reference in a new issue