/** * Wire * Copyright (C) 2016 Wire Swiss GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.waz.zclient.core.api.scala; import com.waz.api.ErrorsList; import com.waz.api.IncomingMessagesList; import com.waz.api.Message; import com.waz.api.ZMessagingApi; import com.waz.zclient.core.stores.inappnotification.InAppNotificationStore; public class ScalaInAppNotificationStore extends InAppNotificationStore implements IncomingMessagesList.MessageListener, IncomingMessagesList.KnockListener, ErrorsList.ErrorListener { private IncomingMessagesList incomingMessages; private ErrorsList syncErrors; public ScalaInAppNotificationStore(ZMessagingApi zMessagingApi) { incomingMessages = zMessagingApi.getIncomingMessages(); incomingMessages.addMessageListener(this); incomingMessages.addKnockListener(this); syncErrors = zMessagingApi.getErrors(); syncErrors.addErrorListener(this); } @Override public void tearDown() { incomingMessages.removeMessageListener(this); incomingMessages.removeKnockListener(this); incomingMessages = null; syncErrors.removeErrorListener(this); syncErrors = null; } //////////////////////////////////////////////////////////////////////////////// // Notifications //////////////////////////////////////////////////////////////////////////////// @Override public void dismissError(String errorId) { for (int i = 0, length = syncErrors.size(); i < length; i++) { ErrorsList.ErrorDescription error = syncErrors.get(i); if (error.getId().equals(errorId)) { error.dismiss(); } } } @Override public ErrorsList.ErrorDescription getError(String errorId) { for (int i = 0, length = syncErrors.size(); i < length; i++) { ErrorsList.ErrorDescription error = syncErrors.get(i); if (error.getId().equals(errorId)) { return error; } } return null; } @Override public void onIncomingMessage(Message message) { notifyIncomingMessageObservers(message); } @Override public void onError(ErrorsList.ErrorDescription error) { notifySyncErrorObservers(error); } @Override public void onKnock(final Message message) { notifyIncomingKnock(message); } }