package com.arellomobile.mvp.viewstate.strategy; import java.util.Iterator; import java.util.List; import com.arellomobile.mvp.MvpView; import com.arellomobile.mvp.viewstate.ViewCommand; /** * Command will be added to end of commands queue. If commands queue contains same type command, then existing command will be removed. * * Date: 17.12.2015 * Time: 11:24 * * @author Yuri Shmakov */ public class AddToEndSingleStrategy implements StateStrategy { @Override public <View extends MvpView> void beforeApply(List<ViewCommand<View>> currentState, ViewCommand<View> incomingCommand) { Iterator<ViewCommand<View>> iterator = currentState.iterator(); while (iterator.hasNext()) { ViewCommand<View> entry = iterator.next(); if (entry.getClass() == incomingCommand.getClass()) { iterator.remove(); break; } } currentState.add(incomingCommand); } @Override public <View extends MvpView> void afterApply(List<ViewCommand<View>> currentState, ViewCommand<View> incomingCommand) { // pass } }