package co.touchlab.droidconandroid.tasks.persisted;
import android.content.Context;
import java.sql.SQLException;
import co.touchlab.android.threading.tasks.helper.RetrofitPersistedTask;
import co.touchlab.android.threading.tasks.persisted.PersistedTask;
import co.touchlab.droidconandroid.CrashReport;
import co.touchlab.droidconandroid.data.AppPrefs;
import co.touchlab.droidconandroid.data.DatabaseHelper;
import co.touchlab.droidconandroid.data.UserAccount;
import co.touchlab.droidconandroid.network.DataHelper;
import co.touchlab.droidconandroid.network.UpdateUserProfile;
import co.touchlab.droidconandroid.presenter.AppManager;
import retrofit.RestAdapter;
/**
* Created by kgalligan on 4/8/16.
*/
public class UpdateUserProfileCommand extends RetrofitPersistedTask
{
@Override
protected void runNetwork(Context context)
{
AppPrefs appPrefs = AppPrefs.getInstance(context);
if (appPrefs.isLoggedIn())
{
UserAccount userAccount = null;
try
{
userAccount = DatabaseHelper.getInstance(context).getUserAccountDao().queryForId(appPrefs.getUserId());
}
catch(SQLException e)
{
throw new RuntimeException(e);
}
RestAdapter restAdapter = DataHelper.makeRequestAdapter(context,
AppManager.getPlatformClient());
UpdateUserProfile updateUserProfile = restAdapter.create(UpdateUserProfile.class);
if (userAccount != null)
{
updateUserProfile.update(userAccount.name, userAccount.profile, userAccount.company,
userAccount.twitter, userAccount.linkedIn,
userAccount.website, null, null, userAccount.phone,
userAccount.email, userAccount.gPlus, userAccount.facebook,
userAccount.emailPublic);
}
else
{
throw new RuntimeException("User update failed");
}
}
}
@Override
protected boolean handleError(Context context, Throwable e)
{
CrashReport.logException(e);
return true;
}
@Override
protected boolean same(PersistedTask persistedTask)
{
return persistedTask instanceof UpdateUserProfileCommand;
}
@Override
protected String logSummary()
{
return "";
}
}