mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
213 lines
8.4 KiB
Java
213 lines
8.4 KiB
Java
/*
|
|
* This is the source code of Telegram for Android v. 3.x.x.
|
|
* It is licensed under GNU GPL v. 2 or later.
|
|
* You should have received a copy of the license in this archive (see LICENSE).
|
|
*
|
|
* Copyright Nikolai Kudashov, 2013-2016.
|
|
*/
|
|
|
|
package com.b44t.ui.Adapters;
|
|
|
|
import com.b44t.messenger.ConnectionsManager;
|
|
import com.b44t.messenger.TLObject;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
public class BaseSearchAdapter extends BaseFragmentAdapter {
|
|
|
|
protected static class HashtagObject {
|
|
}
|
|
|
|
protected ArrayList<TLObject> globalSearch = new ArrayList<>();
|
|
private int reqId = 0;
|
|
protected String lastFoundUsername = null;
|
|
|
|
protected ArrayList<HashtagObject> hashtags;
|
|
|
|
public void queryServerSearch(final String query, final boolean allowChats, final boolean allowBots) {
|
|
if (reqId != 0) {
|
|
ConnectionsManager.getInstance().cancelRequest(reqId, true);
|
|
reqId = 0;
|
|
}
|
|
if (query == null || query.length() < 5) {
|
|
globalSearch.clear();
|
|
notifyDataSetChanged();
|
|
return;
|
|
}
|
|
/*TLRPC.TL_contacts_search req = new TLRPC.TL_contacts_search();
|
|
req.q = query;
|
|
req.limit = 50;*/
|
|
/*final int currentReqId = ++lastReqId; */
|
|
reqId = 0; /* ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() {
|
|
@Override
|
|
public void run(final TLObject response, final TLRPC.TL_error error) {
|
|
AndroidUtilities.runOnUIThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
if (currentReqId == lastReqId) {
|
|
if (error == null) {
|
|
TLRPC.TL_contacts_found res = (TLRPC.TL_contacts_found) response;
|
|
globalSearch.clear();
|
|
if (allowChats) {
|
|
for (int a = 0; a < res.chats.size(); a++) {
|
|
globalSearch.add(res.chats.get(a));
|
|
}
|
|
}
|
|
for (int a = 0; a < res.users.size(); a++) {
|
|
if (!allowBots && res.users.get(a).bot) {
|
|
continue;
|
|
}
|
|
globalSearch.add(res.users.get(a));
|
|
}
|
|
lastFoundUsername = query;
|
|
notifyDataSetChanged();
|
|
}
|
|
}
|
|
reqId = 0;
|
|
}
|
|
});
|
|
}
|
|
}, ConnectionsManager.RequestFlagFailOnServerErrors);*/
|
|
}
|
|
|
|
/*
|
|
public void loadRecentHashtags() {
|
|
MessagesStorage.getInstance().getStorageQueue().postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
SQLiteCursor cursor = MessagesStorage.getInstance().getDatabase().queryFinalized("SELECT id, date FROM hashtag_recent_v2 WHERE 1");
|
|
final ArrayList<HashtagObject> arrayList = new ArrayList<>();
|
|
final HashMap<String, HashtagObject> hashMap = new HashMap<>();
|
|
while (cursor.next()) {
|
|
HashtagObject hashtagObject = new HashtagObject();
|
|
hashtagObject.hashtag = cursor.stringValue(0);
|
|
hashtagObject.date = cursor.intValue(1);
|
|
arrayList.add(hashtagObject);
|
|
hashMap.put(hashtagObject.hashtag, hashtagObject);
|
|
}
|
|
cursor.dispose();
|
|
Collections.sort(arrayList, new Comparator<HashtagObject>() {
|
|
@Override
|
|
public int compare(HashtagObject lhs, HashtagObject rhs) {
|
|
if (lhs.date < rhs.date) {
|
|
return 1;
|
|
} else if (lhs.date > rhs.date) {
|
|
return -1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
});
|
|
AndroidUtilities.runOnUIThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
setHashtags(arrayList, hashMap);
|
|
}
|
|
});
|
|
} catch (Exception e) {
|
|
FileLog.e("messenger", e);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
*/
|
|
|
|
/*
|
|
public void addHashtagsFromMessage(String message) {
|
|
if (message == null) {
|
|
return;
|
|
}
|
|
boolean changed = false;
|
|
Pattern pattern = Pattern.compile("(^|\\s)#[\\w@\\.]+");
|
|
Matcher matcher = pattern.matcher(message);
|
|
while (matcher.find()) {
|
|
int start = matcher.start();
|
|
int end = matcher.end();
|
|
if (message.charAt(start) != '@' && message.charAt(start) != '#') {
|
|
start++;
|
|
}
|
|
String hashtag = message.substring(start, end);
|
|
if (hashtagsByText == null) {
|
|
hashtagsByText = new HashMap<>();
|
|
hashtags = new ArrayList<>();
|
|
}
|
|
HashtagObject hashtagObject = hashtagsByText.get(hashtag);
|
|
if (hashtagObject == null) {
|
|
hashtagObject = new HashtagObject();
|
|
hashtagObject.hashtag = hashtag;
|
|
hashtagsByText.put(hashtagObject.hashtag, hashtagObject);
|
|
} else {
|
|
hashtags.remove(hashtagObject);
|
|
}
|
|
hashtagObject.date = (int) (System.currentTimeMillis() / 1000);
|
|
hashtags.add(0, hashtagObject);
|
|
changed = true;
|
|
}
|
|
if (changed) {
|
|
putRecentHashtags(hashtags);
|
|
}
|
|
}
|
|
*/
|
|
|
|
/*
|
|
private void putRecentHashtags(final ArrayList<HashtagObject> arrayList) {
|
|
MessagesStorage.getInstance().getStorageQueue().postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
MessagesStorage.getInstance().getDatabase().beginTransaction();
|
|
SQLitePreparedStatement state = MessagesStorage.getInstance().getDatabase().executeFast("REPLACE INTO hashtag_recent_v2 VALUES(?, ?)");
|
|
for (int a = 0; a < arrayList.size(); a++) {
|
|
if (a == 100) {
|
|
break;
|
|
}
|
|
HashtagObject hashtagObject = arrayList.get(a);
|
|
state.requery();
|
|
state.bindString(1, hashtagObject.hashtag);
|
|
state.bindInteger(2, hashtagObject.date);
|
|
state.step();
|
|
}
|
|
state.dispose();
|
|
MessagesStorage.getInstance().getDatabase().commitTransaction();
|
|
if (arrayList.size() >= 100) {
|
|
MessagesStorage.getInstance().getDatabase().beginTransaction();
|
|
for (int a = 100; a < arrayList.size(); a++) {
|
|
MessagesStorage.getInstance().getDatabase().executeFast("DELETE FROM hashtag_recent_v2 WHERE id = '" + arrayList.get(a).hashtag + "'").stepThis().dispose();
|
|
}
|
|
MessagesStorage.getInstance().getDatabase().commitTransaction();
|
|
}
|
|
} catch (Exception e) {
|
|
FileLog.e("messenger", e);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
*/
|
|
|
|
/*
|
|
public void clearRecentHashtags() {
|
|
hashtags = new ArrayList<>();
|
|
hashtagsByText = new HashMap<>();
|
|
MessagesStorage.getInstance().getStorageQueue().postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
MessagesStorage.getInstance().getDatabase().executeFast("DELETE FROM hashtag_recent_v2 WHERE 1").stepThis().dispose();
|
|
} catch (Exception e) {
|
|
FileLog.e("messenger", e);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
*/
|
|
|
|
/*
|
|
protected void setHashtags(ArrayList<HashtagObject> arrayList, HashMap<String, HashtagObject> hashMap) {
|
|
hashtags = arrayList;
|
|
hashtagsByText = hashMap;
|
|
hashtagsLoadedFromDb = true;
|
|
}
|
|
*/
|
|
}
|