package com.instructure.canvasapi.utilities;
import com.instructure.canvasapi.model.User;
import retrofit.client.Response;
/**
* Created by Josh Ruesch on 8/16/13.
*
* Copyright (c) 2014 Instructure. All rights reserved.
*/
/**
* Class used to automatically cache users.
* Sets the cacheUser to the user returned by this class.
*/
public abstract class UserCallback extends CanvasCallback<User> {
public UserCallback(APIStatusDelegate statusDelegate) {
super(statusDelegate);
}
public UserCallback(APIStatusDelegate statusDelegate, ErrorDelegate errorDelegate) {
super(statusDelegate, errorDelegate);
}
public abstract void cachedUser(User user);
public abstract void user(User user, Response response);
@Override
public void cache(User user, LinkHeaders linkHeaders, Response response) {
cachedUser(user);
}
@Override
public void firstPage(User user, LinkHeaders linkHeaders, Response response) {
if (getContext() == null) return;
user(user, response);
}
@Override
public void success(User user, Response response) {
// check if it's cancelled or detached
if (getContext() == null) {
return;
}
statusDelegate.onCallbackFinished(SOURCE.API);
try {
APIHelpers.setCacheUser(getContext(), user);
} catch (Exception E) {}
user(user, response);
}
}