diff --git a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java index e25e3862f..4427fc242 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java +++ b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java @@ -9,15 +9,14 @@ import android.os.Bundle; import android.util.Log; import org.joinmastodon.android.api.ObjectValidationException; -import org.joinmastodon.android.api.PushSubscriptionManager; import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.ComposeFragment; import org.joinmastodon.android.fragments.HomeFragment; import org.joinmastodon.android.fragments.ProfileFragment; -import org.joinmastodon.android.fragments.SplashFragment; import org.joinmastodon.android.fragments.ThreadFragment; import org.joinmastodon.android.fragments.onboarding.AccountActivationFragment; +import org.joinmastodon.android.fragments.onboarding.MegalodonLoginFragment; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.updater.GithubSelfUpdater; @@ -34,7 +33,7 @@ public class MainActivity extends FragmentStackActivity{ if(savedInstanceState==null){ if(AccountSessionManager.getInstance().getLoggedInAccounts().isEmpty()){ - showFragmentClearingBackStack(new SplashFragment()); + showFragmentClearingBackStack(new MegalodonLoginFragment()); }else{ AccountSessionManager.getInstance().maybeUpdateLocalInfo(); AccountSession session; 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 a188711b4..98c7eee4a 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 @@ -84,7 +84,7 @@ abstract class InstanceCatalogFragment extends BaseRecyclerFragment0 && currentSearchQuery.matches("^\\S+\\.[^\\.]+$"); + if(addFakeInstance){ + fakeInstance.domain=fakeInstance.normalizedDomain=currentSearchQuery; + fakeInstance.description=getString(R.string.loading_instance); + if(filteredData.size()>0 && filteredData.get(0)==fakeInstance){ + if(list.findViewHolderForAdapterPosition(1) instanceof InstanceViewHolder ivh){ + ivh.rebind(); + } + } + if(filteredData.isEmpty()){ + filteredData.add(fakeInstance); + adapter.notifyItemInserted(0); + } + } + ArrayList prevData=new ArrayList<>(filteredData); + filteredData.clear(); + if(currentSearchQuery.length()>0){ + boolean foundExactMatch=false; + for(CatalogInstance inst:data){ + if(inst.normalizedDomain.contains(currentSearchQuery)){ + filteredData.add(inst); + if(inst.normalizedDomain.equals(currentSearchQuery)) + foundExactMatch=true; + } + } + if(!foundExactMatch && addFakeInstance) { + filteredData.add(0, fakeInstance); + adapter.notifyItemChanged(0); + } + } + UiUtils.updateList(prevData, filteredData, list, adapter, Objects::equals); + for(int i=0;i{ + public InstancesAdapter(){ + super(imgLoader); + } + + @NonNull + @Override + public InstanceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){ + return new InstanceViewHolder(); + } + + @Override + public void onBindViewHolder(InstanceViewHolder holder, int position){ + holder.bind(filteredData.get(position)); + chosenInstance = filteredData.get(position); + if (chosenInstance != fakeInstance) nextButton.setEnabled(true); + super.onBindViewHolder(holder, position); + } + + @Override + public int getItemCount(){ + return filteredData.size(); + } + + @Override + public int getItemViewType(int position){ + return -1; + } + } + + private class InstanceViewHolder extends BindableViewHolder implements UsableRecyclerView.Clickable{ + private final TextView title, description, userCount, lang; + private final RadioButton radioButton; + + public InstanceViewHolder(){ + super(getActivity(), R.layout.item_megalodon_instance, list); + +// itemView.setPadding(V.dp(16), V.dp(16), V.dp(16), V.dp(16)); +// TypedValue value = new TypedValue(); +// getActivity().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, value, true); +// itemView.setBackground(getActivity().getTheme().getDrawable(R.drawable.bg_search_field)); + title=findViewById(R.id.title); + description=findViewById(R.id.description); + userCount=findViewById(R.id.user_count); + lang=findViewById(R.id.lang); + radioButton=findViewById(R.id.radiobtn); + if(Build.VERSION.SDK_INT{ - Nav.go(activity, SplashFragment.class, null); + Nav.go(activity, MegalodonLoginFragment.class, null); dismiss(); })); diff --git a/mastodon/src/main/res/drawable/ic_fluent_globe_20_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_globe_20_regular.xml new file mode 100644 index 000000000..d9a4a3ab6 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_globe_20_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/layout/display_item_text.xml b/mastodon/src/main/res/layout/display_item_text.xml index 200f386e0..812c78b6d 100644 --- a/mastodon/src/main/res/layout/display_item_text.xml +++ b/mastodon/src/main/res/layout/display_item_text.xml @@ -18,7 +18,8 @@ android:layout_marginTop="6dp" android:layout_marginBottom="8dp" android:layout_width="wrap_content" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:visibility="gone"> + + + + + + + + + + + + + + + + + + +