package com.ntels.onecable.admin.common.gcm;

import com.google.firebase.iid.FirebaseInstanceId;

import com.ntels.onecable.admin.common.Constants;
import com.ntels.onecable.admin.common.util.Dlog;

import android.annotation.SuppressLint;
import android.app.IntentService;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;

/**
 *
 */
public class RegistrationIntentService extends IntentService {

    private static final String TAG = "RegistrationIntentService";

    public RegistrationIntentService() {

        super(TAG);
    }

    /**
     * GCM을 위한 Instance ID의 토큰을 생성하여 가져온다.
     *
     * @param intent
     */
    @SuppressLint("LongLogTag")
    @Override
    protected void onHandleIntent(Intent intent) {

        // GCM Instance ID의 토큰을 가져오는 작업이 시작되면 LocalBoardcast로 GENERATING 액션을 알려 ProgressBar가 동작하도록 한다.
        LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(Constants.REGISTRATION_GENERATING));

        // GCM을 위한 Instance ID를 가져온다.
//        InstanceID instanceID = InstanceID.getInstance(this);
        String token      = null;
        try {
            synchronized (TAG) {
//                String default_senderId = AppConfig.getInstance().getProject_Id();
                // GCM 기본 scope는 "GCM"이다.
//                String scope = GoogleCloudMessaging.INSTANCE_ID_SCOPE;
                // Instance ID에 해당하는 토큰을 생성하여 가져온다.
//                token = instanceID.getToken(default_senderId, scope, null);
                token = FirebaseInstanceId.getInstance().getToken();

                Dlog.i("FCM Registration Token: " + token);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // GCM Instance ID에 해당하는 토큰을 획득하면 LocalBoardcast에 COMPLETE 액션을 알린다.
        // 이때 토큰을 함께 넘겨주어서 UI에 토큰 정보를 활용할 수 있도록 했다.
        Intent registrationComplete = new Intent(Constants.REGISTRATION_COMPLETE);
        registrationComplete.putExtra("token", token);
        LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
    }
}
