Search in sources :

Example 1 with NewMessageEvent

use of com.xabber.android.data.message.NewMessageEvent in project xabber-android by redsolution.

the class CrowdfundingManager method startUpdateTimer.

public void startUpdateTimer(final int delay, final int step) {
    if (timer != null)
        timer.cancel();
    if (!CrowdfundingManager.getInstance().haveDelayedMessages()) {
        CrowdfundingMessage lastMessage = getLastMessageFromRealm();
        if (lastMessage != null && isCacheExpired())
            requestFeed(lastMessage.getTimestamp());
        return;
    }
    timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
            CrowdfundingManager.getInstance().removeDelay(delay + step);
            EventBus.getDefault().post(new NewMessageEvent());
            startUpdateTimer(delay + step, step);
        }
    }, step * 1000);
}
Also used : Timer(java.util.Timer) TimerTask(java.util.TimerTask) NewMessageEvent(com.xabber.android.data.message.NewMessageEvent) CrowdfundingMessage(com.xabber.android.data.database.realm.CrowdfundingMessage)

Example 2 with NewMessageEvent

use of com.xabber.android.data.message.NewMessageEvent in project xabber-android by redsolution.

the class CrowdfundingManager method requestLeader.

private void requestLeader() {
    compositeSubscription.add(CrowdfundingClient.getLeader().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<CrowdfundingMessage>>() {

        @Override
        public void call(List<CrowdfundingMessage> crowdfundingMessages) {
            Log.d("crowd", "ok");
            SettingsManager.setLastLeaderCrowdfundingLoadTimestamp(getCurrentTime());
            EventBus.getDefault().post(new NewMessageEvent());
        }
    }, new Action1<Throwable>() {

        @Override
        public void call(Throwable throwable) {
            Log.d("crowd", throwable.toString());
        }
    }));
}
Also used : Action1(rx.functions.Action1) RealmList(io.realm.RealmList) List(java.util.List) NewMessageEvent(com.xabber.android.data.message.NewMessageEvent) CrowdfundingMessage(com.xabber.android.data.database.realm.CrowdfundingMessage)

Example 3 with NewMessageEvent

use of com.xabber.android.data.message.NewMessageEvent in project xabber-android by redsolution.

the class CrowdfundingManager method requestFeed.

private void requestFeed(int timestamp) {
    compositeSubscription.add(CrowdfundingClient.getFeed(timestamp).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<CrowdfundingMessage>>() {

        @Override
        public void call(List<CrowdfundingMessage> crowdfundingMessages) {
            Log.d("crowd", "ok");
            SettingsManager.setLastCrowdfundingLoadTimestamp(getCurrentTime());
            EventBus.getDefault().post(new NewMessageEvent());
        }
    }, new Action1<Throwable>() {

        @Override
        public void call(Throwable throwable) {
            Log.d("crowd", throwable.toString());
        }
    }));
}
Also used : Action1(rx.functions.Action1) RealmList(io.realm.RealmList) List(java.util.List) NewMessageEvent(com.xabber.android.data.message.NewMessageEvent) CrowdfundingMessage(com.xabber.android.data.database.realm.CrowdfundingMessage)

Example 4 with NewMessageEvent

use of com.xabber.android.data.message.NewMessageEvent in project xabber-android by redsolution.

the class NextMamManager method saveOrUpdateMessages.

private List<MessageItem> saveOrUpdateMessages(Realm realm, final Collection<MessageItem> messages, boolean ui) {
    List<MessageItem> messagesToSave = new ArrayList<>();
    if (messages != null && !messages.isEmpty()) {
        Iterator<MessageItem> iterator = messages.iterator();
        while (iterator.hasNext()) {
            MessageItem newMessage = determineSaveOrUpdate(realm, iterator.next(), ui);
            if (newMessage != null)
                messagesToSave.add(newMessage);
        }
    }
    realm.beginTransaction();
    realm.copyToRealmOrUpdate(messagesToSave);
    realm.commitTransaction();
    SyncManager.getInstance().onMessageSaved();
    EventBus.getDefault().post(new NewMessageEvent());
    return messagesToSave;
}
Also used : MessageItem(com.xabber.android.data.database.messagerealm.MessageItem) ArrayList(java.util.ArrayList) NewMessageEvent(com.xabber.android.data.message.NewMessageEvent)

Aggregations

NewMessageEvent (com.xabber.android.data.message.NewMessageEvent)4 CrowdfundingMessage (com.xabber.android.data.database.realm.CrowdfundingMessage)3 RealmList (io.realm.RealmList)2 List (java.util.List)2 Action1 (rx.functions.Action1)2 MessageItem (com.xabber.android.data.database.messagerealm.MessageItem)1 ArrayList (java.util.ArrayList)1 Timer (java.util.Timer)1 TimerTask (java.util.TimerTask)1