Fix #1005 - Avoid duplicate tags when following

This commit is contained in:
Thomas 2023-12-19 17:12:02 +01:00
parent ace3dc089e
commit 520a36946a
3 changed files with 14 additions and 1 deletions

View file

@ -32,6 +32,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Objects;
import app.fedilab.android.BaseMainActivity; import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R; import app.fedilab.android.R;
@ -145,6 +146,11 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA
dialogBuilder.setView(popupAddFollowedTagtBinding.getRoot()); dialogBuilder.setView(popupAddFollowedTagtBinding.getRoot());
popupAddFollowedTagtBinding.addTag.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)}); popupAddFollowedTagtBinding.addTag.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)});
dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> {
String name = Objects.requireNonNull(popupAddFollowedTagtBinding.addTag.getText()).toString().trim();
if(tagList.contains(new Tag(name))) {
Toasty.error(FollowedTagActivity.this, getString(R.string.tag_already_followed), Toasty.LENGTH_LONG).show();
return;
}
if (popupAddFollowedTagtBinding.addTag.getText() != null && popupAddFollowedTagtBinding.addTag.getText().toString().trim().length() > 0) { if (popupAddFollowedTagtBinding.addTag.getText() != null && popupAddFollowedTagtBinding.addTag.getText().toString().trim().length() > 0) {
tagVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddFollowedTagtBinding.addTag.getText().toString().trim()) tagVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddFollowedTagtBinding.addTag.getText().toString().trim())
.observe(FollowedTagActivity.this, newTag -> { .observe(FollowedTagActivity.this, newTag -> {
@ -162,7 +168,7 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA
tagList.add(0, newTag); tagList.add(0, newTag);
followedTagAdapter.notifyItemInserted(0); followedTagAdapter.notifyItemInserted(0);
} else { } else {
Toasty.error(FollowedTagActivity.this, getString(R.string.toast_feature_not_supported), Toasty.LENGTH_LONG).show(); Toasty.error(FollowedTagActivity.this, getString(R.string.not_valid_tag_name), Toasty.LENGTH_LONG).show();
} }
}); });
dialog.dismiss(); dialog.dismiss();

View file

@ -32,6 +32,12 @@ public class Tag implements Serializable {
@SerializedName("following") @SerializedName("following")
public boolean following = false; public boolean following = false;
public Tag() {}
public Tag(String name) {
this.name = name;
}
public int getWeight() { public int getWeight() {
int weight = 0; int weight = 0;
if (history != null && history.size() > 0) { if (history != null && history.size() > 0) {

View file

@ -28,6 +28,7 @@
<string name="clipboard">The content of the message has been copied to the clipboard</string> <string name="clipboard">The content of the message has been copied to the clipboard</string>
<string name="clipboard_url">The URL of the message has been copied to the clipboard</string> <string name="clipboard_url">The URL of the message has been copied to the clipboard</string>
<string name="clipboard_version">Information have been copied to the clipboard</string> <string name="clipboard_version">Information have been copied to the clipboard</string>
<string name="tag_already_followed">You already follow that tag!</string>
<string name="camera">Camera</string> <string name="camera">Camera</string>
<string name="delete_all">Delete all</string> <string name="delete_all">Delete all</string>
<string name="schedule">Schedule</string> <string name="schedule">Schedule</string>