diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 8cf87b53..22671db0 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -5,12 +5,12 @@ plugins { android { compileSdk 31 - buildToolsVersion "32.0.0" + buildToolsVersion "33.0.0-rc1" defaultConfig { applicationId "org.joinmastodon.android" minSdk 23 targetSdk 31 - versionCode 11 + versionCode 12 versionName "0.1" } @@ -51,7 +51,7 @@ dependencies { api 'androidx.annotation:annotation:1.3.0' implementation 'com.squareup.okhttp3:okhttp:3.14.9' implementation 'me.grishka.litex:recyclerview:1.2.1.1' - implementation 'me.grishka.litex:swiperefreshlayout:1.1.0' + implementation 'me.grishka.litex:swiperefreshlayout:1.1.0.1' implementation 'me.grishka.litex:browser:1.4.0' implementation 'me.grishka.litex:dynamicanimation:1.1.0-alpha03' implementation 'me.grishka.litex:viewpager:1.0.0' diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java index dc0b4263..5d65436b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java @@ -8,12 +8,15 @@ import com.squareup.otto.Subscribe; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.accounts.GetAccountStatuses; +import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.StatusCountersUpdatedEvent; +import org.joinmastodon.android.events.StatusCreatedEvent; import org.joinmastodon.android.events.StatusDeletedEvent; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.Status; import org.parceler.Parcels; +import java.util.Collections; import java.util.List; import me.grishka.appkit.api.SimpleCallback; @@ -81,4 +84,19 @@ public class AccountTimelineFragment extends StatusListFragment{ public void onStatusDeleted(StatusDeletedEvent ev){ super.onStatusDeleted(ev); } + + @Subscribe + public void onStatusCreated(StatusCreatedEvent ev){ + if(!AccountSessionManager.getInstance().isSelf(accountID, ev.status.account)) + return; + if(filter==GetAccountStatuses.Filter.DEFAULT){ + // Keep replies to self, discard all other replies + if(ev.status.inReplyToAccountId!=null && !ev.status.inReplyToAccountId.equals(AccountSessionManager.getInstance().getAccount(accountID).self.id)) + return; + }else if(filter==GetAccountStatuses.Filter.MEDIA){ + if(ev.status.mediaAttachments.isEmpty()) + return; + } + prependItems(Collections.singletonList(ev.status), true); + } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 7a7fc815..0bdea08d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -284,8 +284,12 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis if(replyTo!=null){ replyText.setText(getString(R.string.in_reply_to, replyTo.account.displayName)); ArrayList mentions=new ArrayList<>(); - mentions.add('@'+replyTo.account.acct); - for(Mention mention : replyTo.mentions){ + String ownID=AccountSessionManager.getInstance().getAccount(accountID).self.id; + if(!replyTo.account.id.equals(ownID)) + mentions.add('@'+replyTo.account.acct); + for(Mention mention:replyTo.mentions){ + if(mention.id.equals(ownID)) + continue; String m='@'+mention.acct; if(!mentions.contains(m)) mentions.add(m); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java index b91f605f..b0d2dfdc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java @@ -1,16 +1,26 @@ package org.joinmastodon.android.fragments; import android.app.Activity; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageButton; +import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.timelines.GetHashtagTimeline; import org.joinmastodon.android.model.Status; import java.util.List; +import me.grishka.appkit.Nav; import me.grishka.appkit.api.SimpleCallback; public class HashtagTimelineFragment extends StatusListFragment{ private String hashtag; + private ImageButton fab; + + public HashtagTimelineFragment(){ + setListLayoutId(R.layout.recycler_fragment_with_fab); + } @Override public void onAttach(Activity activity){ @@ -37,4 +47,18 @@ public class HashtagTimelineFragment extends StatusListFragment{ if(!getArguments().getBoolean("noAutoLoad") && !loaded && !dataLoading) loadData(); } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState){ + super.onViewCreated(view, savedInstanceState); + fab=view.findViewById(R.id.fab); + fab.setOnClickListener(this::onFabClick); + } + + private void onFabClick(View v){ + Bundle args=new Bundle(); + args.putString("account", accountID); + args.putString("prefilledText", '#'+hashtag+' '); + Nav.go(getActivity(), ComposeFragment.class, args); + } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index 0374aec8..3739309a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -10,6 +10,7 @@ import com.squareup.otto.Subscribe; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.statuses.GetStatusContext; import org.joinmastodon.android.events.StatusCountersUpdatedEvent; +import org.joinmastodon.android.events.StatusCreatedEvent; import org.joinmastodon.android.events.StatusDeletedEvent; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.StatusContext; @@ -97,4 +98,11 @@ public class ThreadFragment extends StatusListFragment{ public void onStatusDeleted(StatusDeletedEvent ev){ super.onStatusDeleted(ev); } + + @Subscribe + public void onStatusCreated(StatusCreatedEvent ev){ + if(ev.status.inReplyToId!=null && getStatusByID(ev.status.inReplyToId)!=null){ + onAppendItems(Collections.singletonList(ev.status)); + } + } } diff --git a/mastodon/src/main/res/layout/fragment_compose.xml b/mastodon/src/main/res/layout/fragment_compose.xml index f499c827..533ffff8 100644 --- a/mastodon/src/main/res/layout/fragment_compose.xml +++ b/mastodon/src/main/res/layout/fragment_compose.xml @@ -79,6 +79,7 @@ android:textAppearance="@style/m3_body_large" android:gravity="top" android:background="@null" + android:hint="@string/compose_hint" android:inputType="textMultiLine|textCapSentences"/> - @color/actionbar_bg + @color/gray_50 \ No newline at end of file diff --git a/mastodon/src/main/res/values/colors.xml b/mastodon/src/main/res/values/colors.xml index 1edf33d0..4bb1213f 100644 --- a/mastodon/src/main/res/values/colors.xml +++ b/mastodon/src/main/res/values/colors.xml @@ -87,8 +87,6 @@ #3E1C96 #282C37 - #FAFBFC - #4C4F58 #282C37 #30FFFFFF #18000000 diff --git a/mastodon/src/main/res/values/strings.xml b/mastodon/src/main/res/values/strings.xml index 2962f4e5..c8aae35d 100644 --- a/mastodon/src/main/res/values/strings.xml +++ b/mastodon/src/main/res/values/strings.xml @@ -203,4 +203,5 @@ Resend Open email app Confirmation email sent + Type or paste what\'s on your mind \ No newline at end of file diff --git a/mastodon/src/main/res/values/styles.xml b/mastodon/src/main/res/values/styles.xml index 3b6b70cd..1808810c 100644 --- a/mastodon/src/main/res/values/styles.xml +++ b/mastodon/src/main/res/values/styles.xml @@ -24,7 +24,7 @@ @color/gray_25 @color/gray_900 @color/white - @color/actionbar_bg + @color/gray_50 @color/navigation_bar_bg @style/Theme.Mastodon.Toolbar @style/Theme.Mastodon.Dialog.Alert @@ -67,8 +67,8 @@ @color/gray_700 @color/gray_25 @color/gray_800 - @color/actionbar_bg_dark - @color/actionbar_bg_dark + @color/gray_800 + @color/gray_800 @style/Theme.Mastodon.Toolbar.Dark @style/Theme.Mastodon.Dialog.Alert.Dark @color/primary_700 @@ -91,13 +91,13 @@