package pl.llp.aircasting.storage;
import pl.llp.aircasting.Intents;
import pl.llp.aircasting.activity.ApplicationState;
import pl.llp.aircasting.activity.SaveOrDiscardRestoredSessionActivity;
import pl.llp.aircasting.model.Session;
import pl.llp.aircasting.storage.repository.SessionRepository;
import android.app.Activity;
import android.content.Intent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Created by ags on 28/03/2013 at 18:46
*/
@Singleton
public class UnfinishedSessionChecker
{
@Inject SessionRepository repo;
@Inject ApplicationState state;
AtomicBoolean checkInProgress = new AtomicBoolean(false);
public void check(Activity context)
{
if(checkInProgress.compareAndSet(false, true))
{
try
{
List<Session> unfinishedSessions = repo.unfinishedSessions();
for (Session unfinishedSession : unfinishedSessions)
{
if(state.saving().isSaving(unfinishedSession.getId()))
{
continue;
}
displayDialogAskingForTitleEtc(context, unfinishedSession);
finish(unfinishedSession);
}
}
finally
{
checkInProgress.set(false);
}
}
}
private void displayDialogAskingForTitleEtc(Activity context, Session session)
{
Intent intent = new Intent(context, SaveOrDiscardRestoredSessionActivity.class);
intent.putExtra(Intents.SESSION_ID, session.getId());
context.startActivityForResult(intent, Intents.SAVE_DIALOG);
}
private void finish(Session unfinishedSession)
{
repo.complete(unfinishedSession.getId());
}
}