Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • wip
  • ChenZhangg-Modify_GRADLE_1
  • jetpack-compose-rewrite
  • demo-jump-in-history
  • attachments
  • 1.7.0 protected
  • 1.6.2 protected
  • 1.6.1 protected
  • 1.6.0 protected
  • 1.5.3 protected
  • 1.5.2 protected
  • 1.5.1 protected
  • 1.5.0 protected
  • 1.4.4 protected
  • 1.4.3 protected
  • 1.4.2 protected
  • 1.4.1 protected
  • 1.4.0 protected
  • v1.3.3 protected
  • v1.3.2 protected
  • v1.3.1 protected
  • v1.3.0 protected
  • v1.2.28 protected
  • v1.2.27 protected
  • v1.2.26 protected
26 results

SimpleBacklogManager.java

Blame
  • SimpleBacklogManager.java 2.60 KiB
    package de.kuschku.libquassel.backlogmanagers;
    
    import android.support.annotation.Nullable;
    import android.support.v7.widget.RecyclerView;
    import android.util.SparseArray;
    
    import com.google.common.collect.Lists;
    
    import java.util.List;
    
    import de.kuschku.libquassel.BusProvider;
    import de.kuschku.libquassel.Client;
    import de.kuschku.libquassel.events.BacklogReceivedEvent;
    import de.kuschku.libquassel.functions.types.InitDataFunction;
    import de.kuschku.libquassel.functions.types.SyncFunction;
    import de.kuschku.libquassel.message.Message;
    import de.kuschku.libquassel.primitives.types.QVariant;
    import de.kuschku.util.ObservableList;
    
    public class SimpleBacklogManager extends BacklogManager {
        SparseArray<ObservableList<Message>> backlogs = new SparseArray<>();
        private BusProvider busProvider;
    
        public SimpleBacklogManager(BusProvider busProvider) {
            this.busProvider = busProvider;
        }
    
        public void requestBacklog(int bufferId, int from, int to, int count, int extra) {
            busProvider.dispatch(new SyncFunction("BacklogManager", "", "requestBacklog", Lists.newArrayList(
                    new QVariant<>("BufferId", bufferId),
                    new QVariant<>("MsgId", from),
                    new QVariant<>("MsgId", to),
                    new QVariant<>(count),
                    new QVariant<>(extra)
            )));
        }
    
        public void receiveBacklog(int bufferId, int from, int to, int count, int extra, List<Message> messages) {
            get(bufferId).list.addAll(messages);
    
            busProvider.sendEvent(new BacklogReceivedEvent(bufferId));
        }
    
        @Override
        public void displayMessage(int bufferId, Message message) {
            get(bufferId).list.add(message);
        }
    
        public void bind(int bufferId, @Nullable RecyclerView.Adapter adapter) {
            if (adapter == null)
                get(bufferId).setCallback(null);
            else
                get(bufferId).setCallback(new ObservableList.RecyclerViewAdapterCallback(adapter));
        }
    
        @Override
        public void requestMoreBacklog(int bufferId, int count) {
            ObservableList<Message> backlog = backlogs.get(bufferId);
            int messageId =
                    (backlog == null) ? -1 :
                    (backlog.first() == null) ? -1 :
                    backlog.first().messageId;
    
            requestBacklog(bufferId, -1, -1, count, 0);
        }
    
        public ObservableList<Message> get(int bufferId) {
            if (backlogs.get(bufferId) == null)
                backlogs.put(bufferId, new ObservableList<>(Message.class));
    
            return backlogs.get(bufferId);
        }
    
        @Override
        public void init(InitDataFunction function, BusProvider provider, Client client) {
    
        }
    }