diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java')
-rw-r--r-- | app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java index 5cc9b4076..ce672178f 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java @@ -14,12 +14,17 @@ package app.fedilab.android.mastodon.client.entities.api; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ +import static app.fedilab.android.BaseMainActivity.emojis; + import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteBlobTooBigException; import android.database.sqlite.SQLiteDatabase; +import android.os.Handler; +import android.os.Looper; +import androidx.annotation.NonNull; import androidx.lifecycle.ViewModelProvider; import com.google.gson.Gson; @@ -225,6 +230,61 @@ public class EmojiInstance implements Serializable { } } + public interface EmojiFilteredCallBack{ + void get(List<Emoji> emojiList); + } + + /** + * Returns the emojis for an instance + * + * @param instance String + * @param filter String + * @param callBack EmojiFilteredCallBack - Get filtered emojis + * + * @return List<Emoji> - List of {@link Emoji} + */ + public void getEmojiListFiltered(@NonNull String instance, @NonNull String filter, EmojiFilteredCallBack callBack) throws DBException { + if (db == null) { + throw new DBException("db is null. Wrong initialization."); + } + new Thread(() -> { + List<Emoji> emojiArrayList= new ArrayList<>(); + List<Emoji> emojiFiltered= new ArrayList<>(); + if (emojis == null || !emojis.containsKey(BaseMainActivity.currentInstance) || emojis.get(BaseMainActivity.currentInstance) == null) { + try { + Cursor c = db.query(Sqlite.TABLE_EMOJI_INSTANCE, null, Sqlite.COL_INSTANCE + " = '" + instance + "'", null, null, null, null, "1"); + emojiArrayList = cursorToEmojiList(c); + } catch (Exception e) { + MastodonInstanceService mastodonInstanceService = init(instance); + Call<List<Emoji>> emojiCall = mastodonInstanceService.customEmoji(); + if (emojiCall != null) { + try { + Response<List<Emoji>> emojiResponse = emojiCall.execute(); + if (emojiResponse.isSuccessful()) { + emojiArrayList = emojiResponse.body(); + } + } catch (Exception err) { + err.printStackTrace(); + } + } + } + } else { + emojiArrayList = emojis.get(instance); + } + if(emojiArrayList != null && emojiArrayList.size() > 0 ) { + for(Emoji emoji: emojiArrayList) { + if(emoji.shortcode.contains(filter)) { + emojiFiltered.add(emoji); + } + } + } + Handler mainHandler = new Handler(Looper.getMainLooper()); + Runnable myRunnable = () -> callBack.get(emojiFiltered); + mainHandler.post(myRunnable); + }).start(); + + } + /** * Restore emoji list from db * |