diff --git a/mastodon/src/main/java/org/joinmastodon/android/DomainManager.java b/mastodon/src/main/java/org/joinmastodon/android/DomainManager.java new file mode 100644 index 000000000..f59d6a9ee --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/DomainManager.java @@ -0,0 +1,84 @@ +package org.joinmastodon.android; + +import android.app.Activity; +import android.app.NotificationManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.ShortcutInfo; +import android.content.pm.ShortcutManager; +import android.graphics.drawable.Icon; +import android.net.Uri; +import android.os.Build; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.browser.customtabs.CustomTabsIntent; + +import org.joinmastodon.android.api.MastodonAPIController; +import org.joinmastodon.android.api.PushSubscriptionManager; +import org.joinmastodon.android.api.requests.accounts.GetOwnAccount; +import org.joinmastodon.android.api.requests.accounts.GetPreferences; +import org.joinmastodon.android.api.requests.accounts.GetWordFilters; +import org.joinmastodon.android.api.requests.instance.GetCustomEmojis; +import org.joinmastodon.android.api.requests.instance.GetInstance; +import org.joinmastodon.android.api.requests.oauth.CreateOAuthApp; +import org.joinmastodon.android.api.session.AccountActivationInfo; +import org.joinmastodon.android.api.session.AccountSession; +import org.joinmastodon.android.api.session.AccountSessionManager; +import org.joinmastodon.android.events.EmojiUpdatedEvent; +import org.joinmastodon.android.model.Account; +import org.joinmastodon.android.model.Application; +import org.joinmastodon.android.model.Emoji; +import org.joinmastodon.android.model.EmojiCategory; +import org.joinmastodon.android.model.Filter; +import org.joinmastodon.android.model.Instance; +import org.joinmastodon.android.model.Preferences; +import org.joinmastodon.android.model.Token; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import me.grishka.appkit.api.Callback; +import me.grishka.appkit.api.ErrorResponse; + +public class DomainManager { + private static final String TAG="DomainManager"; + + private static final DomainManager instance=new DomainManager(); + + private String currentDomain = ""; + + + public static DomainManager getInstance(){ + return instance; + } + + private DomainManager(){ + + } + + public String getCurrentDomain() { + return currentDomain; + } + + public void setCurrentDomain(String domain) { + Log.e(TAG, "setCurrentDomain: " + domain ); + this.currentDomain = domain; + } +} diff --git a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java index 2dc19f0e3..95565ad8b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java +++ b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java @@ -2,8 +2,10 @@ package org.joinmastodon.android; import android.Manifest; import android.app.Fragment; +import android.app.assist.AssistContent; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.util.Log; @@ -36,6 +38,7 @@ import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.ErrorResponse; public class MainActivity extends FragmentStackActivity{ + @Override protected void onCreate(@Nullable Bundle savedInstanceState){ UiUtils.setUserPreferredTheme(this); @@ -90,6 +93,7 @@ public class MainActivity extends FragmentStackActivity{ AccountSession accountSession; try{ accountSession=AccountSessionManager.getInstance().getAccount(accountID); + DomainManager.getInstance().setCurrentDomain(accountSession.domain); }catch(IllegalStateException x){ return; } @@ -177,4 +181,11 @@ public class MainActivity extends FragmentStackActivity{ super.onBackPressed(); } } + @Override + public void onProvideAssistContent(AssistContent outContent) { + super.onProvideAssistContent(outContent); + + outContent.setWebUri(Uri.parse(DomainManager.getInstance().getCurrentDomain())); + } + } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java index affcdafc0..5cdcafbe8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java @@ -13,6 +13,7 @@ import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.text.TextUtils; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; @@ -20,11 +21,14 @@ import android.view.animation.TranslateAnimation; import android.widget.ImageButton; import android.widget.Toolbar; +import org.joinmastodon.android.DomainManager; import org.joinmastodon.android.E; import org.joinmastodon.android.GlobalUserPreferences; +import org.joinmastodon.android.MainActivity; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships; import org.joinmastodon.android.api.requests.polls.SubmitPollVote; +import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.PollUpdatedEvent; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.DisplayItemsParent; @@ -104,6 +108,10 @@ public abstract class BaseStatusListFragment exten setRetainInstance(true); } + public void setAssistContentUri() { + DomainManager.getInstance().setCurrentDomain(AccountSessionManager.getInstance().getAccount(accountID).domain); + } + @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/CustomLocalTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/CustomLocalTimelineFragment.java index 9a89e3a44..01434ccc1 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/CustomLocalTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/CustomLocalTimelineFragment.java @@ -1,6 +1,9 @@ package org.joinmastodon.android.fragments; import android.app.Activity; + +import org.joinmastodon.android.DomainManager; +import org.joinmastodon.android.MainActivity; import org.joinmastodon.android.api.requests.timelines.GetPublicTimeline; import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Status; @@ -35,6 +38,11 @@ public class CustomLocalTimelineFragment extends StatusListFragment { setTitle(this.domain); } + @Override + public void setAssistContentUri() { + DomainManager.getInstance().setCurrentDomain(domain); + } + @Override protected void doLoadData(int offset, int count){ currentRequest=new GetPublicTimeline(true, false, refreshing ? null : maxID, count) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index c23c42c46..12ba96c6a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -50,7 +50,9 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.viewpager2.widget.ViewPager2; +import org.joinmastodon.android.DomainManager; import org.joinmastodon.android.GlobalUserPreferences; +import org.joinmastodon.android.MainActivity; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.accounts.GetAccountByID; import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships; @@ -189,6 +191,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList profileAccountID=account.id; isOwnProfile=AccountSessionManager.getInstance().isSelf(accountID, account); loaded=true; + DomainManager.getInstance().setCurrentDomain(account.url); if(!isOwnProfile) loadRelationship(); }else{ @@ -857,6 +860,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList // aboutFragment.setNote(relationship.note, accountID, profileAccountID); } notifyButton.setContentDescription(getString(relationship.notifying ? R.string.sk_user_post_notifications_on : R.string.sk_user_post_notifications_off, '@'+account.username)); + DomainManager.getInstance().setCurrentDomain(account.url); } public ImageButton getFab() { diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java index 0ce149cef..a3bc0fed5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java @@ -7,6 +7,7 @@ import com.squareup.otto.Subscribe; import org.joinmastodon.android.E; import org.joinmastodon.android.GlobalUserPreferences; +import org.joinmastodon.android.MainActivity; import org.joinmastodon.android.events.PollUpdatedEvent; import org.joinmastodon.android.events.RemoveAccountPostsEvent; import org.joinmastodon.android.events.StatusCountersUpdatedEvent;