001package com.gigya.android.sdk.interruption;
002
003import android.support.annotation.Nullable;
004
005import com.gigya.android.sdk.GigyaLoginCallback;
006import com.gigya.android.sdk.account.models.GigyaAccount;
007import com.gigya.android.sdk.api.GigyaApiResponse;
008import com.gigya.android.sdk.api.IBusinessApiService;
009
010import java.util.HashMap;
011import java.util.Map;
012
013public class Resolver<A extends GigyaAccount> {
014
015    final protected GigyaLoginCallback<A> _loginCallback;
016    final protected GigyaApiResponse _interruption;
017    final protected IBusinessApiService<A> _businessApiService;
018
019    public Resolver(GigyaLoginCallback<A> loginCallback, GigyaApiResponse interruption, IBusinessApiService<A> businessApiService) {
020        _loginCallback = loginCallback;
021        _interruption = interruption;
022        _businessApiService = businessApiService;
023    }
024
025    public String getRegToken() {
026        return _interruption.getField("regToken", String.class);
027    }
028
029    protected void finalizeRegistration(@Nullable Runnable completionHandler) {
030        final Map<String, Object> params = new HashMap<>();
031        params.put("regToken", getRegToken()); // Null will result in error.
032        params.put("include", "profile,data,emails,subscriptions,preferences");
033        params.put("includeUserInfo", "true");
034        _businessApiService.finalizeRegistration(params, _loginCallback);
035        if (completionHandler != null) {
036            completionHandler.run();
037        }
038    }
039}