diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/AccountActivationFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/AccountActivationFragment.java index 129e95fb4..92eb026ad 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/AccountActivationFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/AccountActivationFragment.java @@ -248,6 +248,6 @@ public class AccountActivationFragment extends ToolbarFragment{ Bundle args=new Bundle(); args.putString("account", accountID); // Nav.goClearingStack(getActivity(), HomeFragment.class, args); - Nav.goClearingStack(getActivity(), OnboardingProfileSetupFragment.class, args); + Nav.goClearingStack(getActivity(), OnboardingFollowSuggestionsFragment.class, args); } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogFragment.java index 7c463f191..99c9a7478 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogFragment.java @@ -5,15 +5,12 @@ import android.app.ProgressDialog; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.LocaleList; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; -import android.view.ViewGroup; import android.view.WindowInsets; import android.widget.Button; import android.widget.EditText; -import android.widget.RadioButton; import android.widget.TextView; import org.joinmastodon.android.R; @@ -23,7 +20,6 @@ import org.joinmastodon.android.api.requests.instance.GetInstance; import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.catalog.CatalogInstance; import org.joinmastodon.android.ui.M3AlertDialogBuilder; -import org.joinmastodon.android.ui.utils.UiUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -31,6 +27,8 @@ import org.xml.sax.InputSource; import java.io.IOException; import java.net.IDN; +import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -50,7 +48,6 @@ import me.grishka.appkit.fragments.BaseRecyclerFragment; import me.grishka.appkit.utils.BindableViewHolder; import me.grishka.appkit.utils.MergeRecyclerAdapter; import me.grishka.appkit.utils.V; -import me.grishka.appkit.views.UsableRecyclerView; import okhttp3.Call; import okhttp3.Request; import okhttp3.Response; @@ -112,46 +109,10 @@ abstract class InstanceCatalogFragment extends BaseRecyclerFragment sortInstances(List result){ - Map> byLang=result.stream().collect(Collectors.groupingBy(ci->ci.language)); - for(List group:byLang.values()){ - Collections.sort(group, (a, b)->{ - double aa=Math.abs(DUNBAR-Math.log(a.lastWeekUsers)); - double bb=Math.abs(DUNBAR-Math.log(b.lastWeekUsers)); - return Double.compare(aa, bb); - }); - } - // get the list of user-configured system languages - List userLangs; - if(Build.VERSION.SDK_INT<24){ - userLangs=Collections.singletonList(getResources().getConfiguration().locale.getLanguage()); - }else{ - LocaleList ll=getResources().getConfiguration().getLocales(); - userLangs=new ArrayList<>(ll.size()); - for(int i=0;i> byLang=result.stream().sorted(Comparator.comparingInt((CatalogInstance ci)->ci.lastWeekUsers).reversed()).collect(Collectors.groupingBy(ci->ci.approvalRequired)); ArrayList sortedList=new ArrayList<>(); - for(String lang:userLangs){ - List langInstances=byLang.remove(lang); - if(langInstances!=null){ - sortedList.addAll(langInstances); - } - } - // sort the remaining language groups by aggregate lastWeekUsers - class InstanceGroup{ - public int activeUsers; - public List instances; - } - byLang.values().stream().map(il->{ - InstanceGroup group=new InstanceGroup(); - group.instances=il; - for(CatalogInstance instance:il){ - group.activeUsers+=instance.lastWeekUsers; - } - return group; - }).sorted(Comparator.comparingInt((InstanceGroup g)->g.activeUsers).reversed()).forEachOrdered(ig->sortedList.addAll(ig.instances)); + sortedList.addAll(byLang.getOrDefault(false, Collections.emptyList())); + sortedList.addAll(byLang.getOrDefault(true, Collections.emptyList())); return sortedList; } @@ -208,6 +169,20 @@ abstract class InstanceCatalogFragment extends BaseRecyclerFragment0 && filteredData.get(0)==fakeInstance){ + if(list.findViewHolderForAdapterPosition(1) instanceof BindableViewHolder ivh){ + ivh.rebind(); + } + } + } + return; + } loadingInstanceDomain=domain; loadingInstanceRequest=new GetInstance(); loadingInstanceRequest.setCallback(new Callback<>(){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java index b97bf0e09..798b18ac5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java @@ -64,7 +64,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple private List languages=Collections.emptyList(); private PopupMenu langFilterMenu, speedFilterMenu; - private SignupSpeedFilter currentSignupSpeedFilter=SignupSpeedFilter.INSTANT; + private SignupSpeedFilter currentSignupSpeedFilter=SignupSpeedFilter.ANY; private String currentLanguage=null; private boolean searchQueryMode; private LinearLayout filtersWrap; @@ -75,7 +75,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple private FilterChipView categoryGeneral, categorySpecialInterests; private List regionalFilters; private CatalogInstance.Region chosenRegion; - private CategoryChoice categoryChoice; + private CategoryChoice categoryChoice=CategoryChoice.GENERAL; public InstanceCatalogSignupFragment(){ super(R.layout.fragment_onboarding_common, 10); @@ -371,6 +371,9 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple if(instances.isEmpty()){ instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList()); } + if(instances.isEmpty()){ + instances=data.stream().filter(ci->("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList()); + } if(instances.isEmpty()){ return; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java index 6dd47f224..c2c4fcf62 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java @@ -2,8 +2,14 @@ package org.joinmastodon.android.fragments.onboarding; import android.annotation.SuppressLint; import android.app.Activity; +import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; +import android.text.Html; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.StyleSpan; +import android.text.style.TypefaceSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -64,7 +70,7 @@ public class InstanceRulesFragment extends ToolbarFragment{ list.setLayoutManager(new LinearLayoutManager(getActivity())); View headerView=inflater.inflate(R.layout.item_list_header_simple, list, false); TextView text=headerView.findViewById(R.id.text); - text.setText(getString(R.string.instance_rules_subtitle, instance.uri)); + text.setText(Html.fromHtml(getString(R.string.instance_rules_subtitle, ""+Html.escapeHtml(instance.uri)+""))); adapter=new MergeRecyclerAdapter(); adapter.addAdapter(new SingleViewRecyclerAdapter(headerView)); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java index f1ca5c4f7..c4198fedd 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java @@ -191,6 +191,13 @@ public class OnboardingFollowSuggestionsFragment extends BaseRecyclerFragment(){ @Override public void onSuccess(Relationship result){ + relationships.put(id, result); + for(int i=0;iNav.finish(this), 500); - } - - @Override - protected boolean canGoBack(){ - return true; - } - - @Override - public void onToolbarNavigationClick(){ - Bundle args=new Bundle(); - args.putString("account", accountID); - Nav.goClearingStack(getActivity(), HomeFragment.class, args); + Nav.go(getActivity(), OnboardingProfileSetupFragment.class, args); } private class SuggestionsAdapter extends UsableRecyclerView.Adapter implements ImageLoaderRecyclerAdapter{ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingProfileSetupFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingProfileSetupFragment.java index a5f1e83c8..4814fd990 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingProfileSetupFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingProfileSetupFragment.java @@ -151,8 +151,7 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R AccountSessionManager.getInstance().updateAccountInfo(accountID, result); Bundle args=new Bundle(); args.putString("account", accountID); - Nav.go(getActivity(), OnboardingFollowSuggestionsFragment.class, args); - getActivity().getWindow().getDecorView().postDelayed(()->Nav.finish(OnboardingProfileSetupFragment.this), 500); + Nav.goClearingStack(getActivity(), HomeFragment.class, args); } @Override @@ -182,6 +181,11 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R profileFieldsLayout.startDragging(view); return true; }); + view.findViewById(R.id.delete).setOnClickListener(v->{ + profileFieldsLayout.removeView(view); + if(addRow.getVisibility()==View.GONE) + addRow.setVisibility(View.VISIBLE); + }); return view; } @@ -222,16 +226,4 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R img.setForeground(null); ViewImageLoader.load(img, null, new UrlImageLoaderRequest(uri, size, size)); } - - @Override - protected boolean canGoBack(){ - return true; - } - - @Override - public void onToolbarNavigationClick(){ - Bundle args=new Bundle(); - args.putString("account", accountID); - Nav.goClearingStack(getActivity(), HomeFragment.class, args); - } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index a04316a2a..c2f63a038 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -691,12 +691,6 @@ public class UiUtils { TypedArray ta=button.getContext().obtainStyledAttributes(styleRes, new int[]{android.R.attr.background}); button.setBackground(ta.getDrawable(0)); ta.recycle(); - ta=button.getContext().obtainStyledAttributes(styleRes, new int[]{android.R.attr.textColor}); - if(relationship.blocking) - button.setTextColor(button.getResources().getColorStateList(R.color.error_600)); - else - button.setTextColor(ta.getColorStateList(0)); - ta.recycle(); } public static void performAccountAction(Activity activity, Account account, String accountID, Relationship relationship, Button button, Consumer progressCallback, Consumer resultCallback) { diff --git a/mastodon/src/main/res/drawable/bg_m3_outlined_text_field_nopad.xml b/mastodon/src/main/res/drawable/bg_m3_outlined_text_field_nopad.xml new file mode 100644 index 000000000..bd14050ed --- /dev/null +++ b/mastodon/src/main/res/drawable/bg_m3_outlined_text_field_nopad.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/drawable/ic_delete_24px.xml b/mastodon/src/main/res/drawable/ic_delete_24px.xml new file mode 100644 index 000000000..93999e25a --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_delete_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/mastodon/src/main/res/layout/fragment_onboarding_activation.xml b/mastodon/src/main/res/layout/fragment_onboarding_activation.xml index b14f47e29..04618b95d 100644 --- a/mastodon/src/main/res/layout/fragment_onboarding_activation.xml +++ b/mastodon/src/main/res/layout/fragment_onboarding_activation.xml @@ -9,7 +9,8 @@ + android:layout_weight="1" + android:fillViewport="true"> + + + + diff --git a/mastodon/src/main/res/layout/fragment_onboarding_follow_suggestions.xml b/mastodon/src/main/res/layout/fragment_onboarding_follow_suggestions.xml index 7872fc04b..cc0212208 100644 --- a/mastodon/src/main/res/layout/fragment_onboarding_follow_suggestions.xml +++ b/mastodon/src/main/res/layout/fragment_onboarding_follow_suggestions.xml @@ -40,17 +40,17 @@ android:background="@drawable/bg_onboarding_panel">