package mediabrowser.apiinteraction.connectionmanager;
import mediabrowser.apiinteraction.EmptyResponse;
import mediabrowser.apiinteraction.ICredentialProvider;
import mediabrowser.model.apiclient.ServerCredentials;
import mediabrowser.model.apiclient.ServerInfo;
import mediabrowser.model.apiclient.ServerUserInfo;
import mediabrowser.model.connect.UserLinkType;
import mediabrowser.model.logging.ILogger;
import java.util.ArrayList;
public class LogoutAllResponse extends EmptyResponse {
private ICredentialProvider credentialProvider;
private ILogger logger;
private EmptyResponse response;
private ConnectionManager connectionManager;
public LogoutAllResponse(ICredentialProvider credentialProvider, ILogger logger, EmptyResponse response, ConnectionManager connectionManager) {
this.credentialProvider = credentialProvider;
this.logger = logger;
this.response = response;
this.connectionManager = connectionManager;
}
private void OnSuccessOrFail() {
logger.Debug("Updating saved credentials for all servers");
ServerCredentials credentials = credentialProvider.GetCredentials();
ArrayList<ServerInfo> servers = new ArrayList<ServerInfo>();
for (ServerInfo server : credentials.getServers()) {
if (server.getUserLinkType() == null ||
server.getUserLinkType() != UserLinkType.Guest){
server.setAccessToken(null);
server.setUserId(null);
server.setExchangeToken(null);
for (ServerUserInfo user : server.getUsers())
{
user.setIsSignedInOffline(false);
}
servers.add(server);
}
}
credentials.setConnectAccessToken(null);
credentials.setConnectUserId(null);
credentials.setServers(servers);
credentialProvider.SaveCredentials(credentials);
connectionManager.clearConnectUserAfterLogout();
response.onResponse();
}
@Override
public void onResponse() {
OnSuccessOrFail();
}
@Override
public void onError(Exception ex) {
OnSuccessOrFail();
}
}