diff --git a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java index 54df1d7a4..1a7435a66 100644 --- a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java @@ -32,7 +32,7 @@ import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; import android.text.style.UnderlineSpan; -import android.util.Log; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -52,6 +52,8 @@ import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -73,7 +75,6 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import app.fedilab.android.R; -import app.fedilab.android.asynctasks.DeleteDomainsAsyncTask; import app.fedilab.android.asynctasks.ManageListsAsyncTask; import app.fedilab.android.asynctasks.PostActionAsyncTask; import app.fedilab.android.asynctasks.RetrieveAccountAsyncTask; @@ -95,7 +96,7 @@ import app.fedilab.android.client.Entities.RemoteInstance; import app.fedilab.android.client.Entities.Status; import app.fedilab.android.client.Entities.UserNote; import app.fedilab.android.client.HttpsConnection; -import app.fedilab.android.drawers.DomainsListAdapter; +import app.fedilab.android.drawers.IdentityProofsAdapter; import app.fedilab.android.drawers.StatusListAdapter; import app.fedilab.android.fragments.DisplayAccountsFragment; import app.fedilab.android.fragments.DisplayStatusFragment; @@ -1568,19 +1569,14 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt identity_proofs_indicator.setOnClickListener(v -> { AlertDialog.Builder builder = new AlertDialog.Builder(ShowAccountActivity.this, style); - final ArrayAdapter arrayAdapter = new ArrayAdapter<>(ShowAccountActivity.this, android.R.layout.select_dialog_item); - for (IdentityProof identityProof: identityProofs) { - arrayAdapter.add(String.format("✅ @%s \uD83D\uDD17 %s", identityProof.getProvider_username(), identityProof.getProvider() )); - } - builder.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int position) { - if( identityProofs.size() > position ) { - String url = identityProofs.get(position).getProfile_url(); - Helper.openBrowser(ShowAccountActivity.this, url); - } - } - }); + LayoutInflater inflater = getLayoutInflater(); + View identityProofsView = inflater.inflate(R.layout.popup_identity_proof, new LinearLayout(ShowAccountActivity.this), false); + RecyclerView identityProofsRecycler = identityProofsView.findViewById(R.id.identity_proofs_list); + LinearLayoutManager mLayoutManager = new LinearLayoutManager(ShowAccountActivity.this); + identityProofsRecycler.setLayoutManager(mLayoutManager); + IdentityProofsAdapter identityProofsAdapter = new IdentityProofsAdapter(identityProofs); + identityProofsRecycler.setAdapter(identityProofsAdapter); + builder.setView(identityProofsView); builder .setTitle(R.string.identity_proofs) .setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java b/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java index f5bbe19f2..4b741e3bc 100644 --- a/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java @@ -15,38 +15,34 @@ package app.fedilab.android.drawers; * see . */ import android.content.Context; -import android.content.Intent; -import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; import java.util.List; - import app.fedilab.android.R; -import app.fedilab.android.activities.HashTagActivity; +import app.fedilab.android.client.Entities.IdentityProof; +import app.fedilab.android.helper.Helper; /** - * Created by Thomas on 31/03/2019. - * Adapter for tags results + * Created by Thomas on 19/12/2019. + * Adapter for identity proofs */ -public class SearchTagsAdapter extends RecyclerView.Adapter { +public class IdentityProofsAdapter extends RecyclerView.Adapter { private Context context; - private List tags; + private List identityProofs; - public SearchTagsAdapter(List tags) { - this.tags = (tags != null) ? tags : new ArrayList<>(); + public IdentityProofsAdapter(List identityProofs) { + this.identityProofs = identityProofs; } - public String getItem(int position) { - return tags.get(position); + public IdentityProof getItem(int position) { + return identityProofs.get(position); } @NonNull @@ -54,26 +50,22 @@ public class SearchTagsAdapter extends RecyclerView.Adapter { public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { context = parent.getContext(); LayoutInflater layoutInflater = LayoutInflater.from(context); - return new ViewHolder(layoutInflater.inflate(R.layout.drawer_tag_search_tab, parent, false)); + return new ViewHolder(layoutInflater.inflate(R.layout.drawer_identity_proofs, parent, false)); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { final ViewHolder holder = (ViewHolder) viewHolder; - final String tag = getItem(i); - - holder.tag_name.setText(String.format("#%s", tag)); - holder.tag_name.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(context, HashTagActivity.class); - Bundle b = new Bundle(); - b.putString("tag", tag.trim()); - intent.putExtras(b); - context.startActivity(intent); - } + final IdentityProof identityProof = getItem(i); + holder.proof_name.setText(String.format("@%s", identityProof.getProvider_username())); + holder.proof_name.setOnClickListener(v -> { + Helper.openBrowser(context, identityProof.getProfile_url()); }); - + holder.proof_name_network.setText(context.getString(R.string.verified_by, identityProof.getProvider())); + holder.proof_container.setOnClickListener(v -> { + Helper.openBrowser(context, identityProof.getProof_url()); + }); + holder.proof_date.setText(Helper.shortDateToString(identityProof.getUpdated_at())); } @Override @@ -83,15 +75,19 @@ public class SearchTagsAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { - return tags.size(); + return identityProofs.size(); } class ViewHolder extends RecyclerView.ViewHolder { - private TextView tag_name; + private TextView proof_name, proof_name_network, proof_date; + private LinearLayout proof_container; public ViewHolder(@NonNull View itemView) { super(itemView); - tag_name = itemView.findViewById(R.id.tag_name); + proof_name = itemView.findViewById(R.id.proof_name); + proof_name_network = itemView.findViewById(R.id.proof_name_network); + proof_container = itemView.findViewById(R.id.proof_container); + proof_date = itemView.findViewById(R.id.proof_date); } } diff --git a/app/src/main/res/layout/activity_show_account.xml b/app/src/main/res/layout/activity_show_account.xml index 8bc6aa310..1abd61f38 100644 --- a/app/src/main/res/layout/activity_show_account.xml +++ b/app/src/main/res/layout/activity_show_account.xml @@ -237,7 +237,7 @@ android:layout_width="45dp" android:layout_height="45dp" android:layout_marginStart="10dp" - android:contentDescription="Identity proofs" + android:contentDescription="@string/identity_proofs" android:padding="8dp" android:scaleType="fitCenter" android:src="@drawable/ic_verified_user" diff --git a/app/src/main/res/layout/drawer_identity_proofs.xml b/app/src/main/res/layout/drawer_identity_proofs.xml index 3aac0d561..8955af3ff 100644 --- a/app/src/main/res/layout/drawer_identity_proofs.xml +++ b/app/src/main/res/layout/drawer_identity_proofs.xml @@ -14,12 +14,50 @@ You should have received a copy of the GNU General Public License along with Fedilab; if not, see . --> - - + android:orientation="horizontal"> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popup_identity_proof.xml b/app/src/main/res/layout/popup_identity_proof.xml index 3509b8411..caf3b1b6a 100644 --- a/app/src/main/res/layout/popup_identity_proof.xml +++ b/app/src/main/res/layout/popup_identity_proof.xml @@ -1,6 +1,6 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d1c095296..c18c87260 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1209,4 +1209,6 @@ Twitter accounts (via Nitter) Twitter usernames space separated Identity proofs + Verified identity + Verified by %1$s \ No newline at end of file