Search in sources :

Example 1 with EventCallback

use of com.fitpay.android.utils.EventCallback in project fitpay-android-sdk by fitpay.

the class WebViewCommunicatorImpl method getUserAndDevice.

private void getUserAndDevice(final String deviceId, final String callbackId) {
    ApiManager.getInstance().getUser(new ApiCallback<User>() {

        @Override
        public void onSuccess(User result) {
            if (result == null) {
                onTaskError(EventCallback.USER_CREATED, callbackId, "getUser failed: result is null");
                return;
            }
            WebViewCommunicatorImpl.this.user = result;
            RxBus.getInstance().post(new UserReceived(user.getId(), user.getUsername()));
            EventCallback eventCallback = new EventCallback.Builder().setCommand(EventCallback.USER_CREATED).setStatus(EventCallback.STATUS_OK).build();
            eventCallback.send();
            result.getDevice(deviceId, new ApiCallback<Device>() {

                @Override
                public void onSuccess(Device result) {
                    WebViewCommunicatorImpl.this.device = result;
                    String token = ApiManager.getPushToken();
                    String deviceToken = device.getNotificationToken();
                    final Runnable onSuccess = () -> onTaskSuccess(EventCallback.GET_USER_AND_DEVICE, callbackId);
                    boolean automaticallySubscribeToUserEventStream = true;
                    if (ApiManager.getConfig().containsKey(ApiManager.PROPERTY_AUTOMATICALLY_SUBSCRIBE_TO_USER_EVENT_STREAM)) {
                        automaticallySubscribeToUserEventStream = "true".equals(ApiManager.getConfig().get(ApiManager.PROPERTY_AUTOMATICALLY_SUBSCRIBE_TO_USER_EVENT_STREAM));
                    }
                    if (automaticallySubscribeToUserEventStream) {
                        try {
                            UserEventStreamManager.subscribe(user.getId());
                        } catch (IOException e) {
                            FPLog.e(e);
                        }
                        boolean automaticSyncThroughUserEventStream = true;
                        if (ApiManager.getConfig().containsKey(ApiManager.PROPERTY_AUTOMATICALLY_SYNC_FROM_USER_EVENT_STREAM)) {
                            automaticSyncThroughUserEventStream = "true".equals(ApiManager.getConfig().get(ApiManager.PROPERTY_AUTOMATICALLY_SYNC_FROM_USER_EVENT_STREAM));
                        }
                        if (automaticSyncThroughUserEventStream) {
                            userEventStreamSyncListener = new UserEventStreamListener() {

                                @Override
                                public void onUserEvent(UserStreamEvent event) {
                                    if ("SYNC".equals(event.getType())) {
                                        SyncInfo syncInfo = gson.fromJson(event.getPayload(), SyncInfo.class);
                                        syncInfo.setInitiator(SyncInitiator.PLATFORM);
                                        SyncRequest syncRequest = new SyncRequest.Builder().setSyncId(syncInfo.getSyncId()).setSyncInfo(syncInfo).setConnector(deviceService.getPaymentDeviceConnector()).setDevice(device).setUser(user).build();
                                        RxBus.getInstance().post(syncRequest);
                                    }
                                }
                            };
                            NotificationManager.getInstance().addListener(userEventStreamSyncListener);
                        }
                    }
                    if (deviceToken == null || !deviceToken.equals(token)) {
                        Device updatedDevice = new Device.Builder().setNotificationToken(token).build();
                        device.updateToken(updatedDevice, deviceToken == null, new ApiCallback<Device>() {

                            @Override
                            public void onSuccess(Device result) {
                                WebViewCommunicatorImpl.this.device = result;
                                onSuccess.run();
                            }

                            @Override
                            public void onFailure(@ResultCode.Code int errorCode, String errorMessage) {
                                onTaskError(EventCallback.GET_USER_AND_DEVICE, callbackId, "update device failed:" + errorMessage);
                            }
                        });
                    } else {
                        onSuccess.run();
                    }
                }

                @Override
                public void onFailure(@ResultCode.Code int errorCode, String errorMessage) {
                    onTaskError(EventCallback.GET_USER_AND_DEVICE, callbackId, "getDevice failed " + errorMessage);
                }
            });
        }

        @Override
        public void onFailure(@ResultCode.Code int errorCode, String errorMessage) {
            onTaskError(EventCallback.USER_CREATED, callbackId, "getUser failed " + errorMessage);
        }
    });
}
Also used : User(com.fitpay.android.api.models.user.User) ApiCallback(com.fitpay.android.api.callbacks.ApiCallback) Device(com.fitpay.android.api.models.device.Device) UserStreamEvent(com.fitpay.android.api.models.UserStreamEvent) UserEventStreamListener(com.fitpay.android.api.sse.UserEventStreamListener) EventCallback(com.fitpay.android.utils.EventCallback) IOException(java.io.IOException) SyncRequest(com.fitpay.android.paymentdevice.models.SyncRequest) NotificationSyncRequest(com.fitpay.android.paymentdevice.events.NotificationSyncRequest) SyncInfo(com.fitpay.android.paymentdevice.models.SyncInfo) UserReceived(com.fitpay.android.webview.events.UserReceived)

Example 2 with EventCallback

use of com.fitpay.android.utils.EventCallback in project fitpay-android-sdk by fitpay.

the class WebViewCommunicatorImpl method onTaskSuccess.

private void onTaskSuccess(@EventCallback.Command String command, String callbackId, int response) {
    AppResponseModel stubResponse = new AppResponseModel.Builder().status(response).build();
    if (null != callbackId) {
        sendMessageToJs(callbackId, true, stubResponse);
    }
    EventCallback eventCallback = new EventCallback.Builder().setCommand(command).setStatus(EventCallback.STATUS_OK).build();
    eventCallback.send();
}
Also used : EventCallback(com.fitpay.android.utils.EventCallback)

Example 3 with EventCallback

use of com.fitpay.android.utils.EventCallback in project fitpay-android-sdk by fitpay.

the class WebViewCommunicatorImpl method onTaskError.

private void onTaskError(@EventCallback.Command String command, String callbackId, String errorMessage) {
    AppResponseModel failedResponse = new AppResponseModel.Builder().status(RESPONSE_FAILURE).reason(errorMessage).build();
    FPLog.w(TAG, errorMessage);
    if (null != callbackId) {
        sendMessageToJs(callbackId, false, gson.toJson(failedResponse));
    }
    RxBus.getInstance().post(new DeviceStatusMessage(activity.getString(R.string.fp_sync_failed, errorMessage), deviceId, DeviceStatusMessage.ERROR));
    EventCallback eventCallback = new EventCallback.Builder().setCommand(command).setStatus(EventCallback.STATUS_FAILED).setReason(errorMessage).build();
    eventCallback.send();
}
Also used : DeviceStatusMessage(com.fitpay.android.webview.events.DeviceStatusMessage) EventCallback(com.fitpay.android.utils.EventCallback)

Aggregations

EventCallback (com.fitpay.android.utils.EventCallback)3 ApiCallback (com.fitpay.android.api.callbacks.ApiCallback)1 UserStreamEvent (com.fitpay.android.api.models.UserStreamEvent)1 Device (com.fitpay.android.api.models.device.Device)1 User (com.fitpay.android.api.models.user.User)1 UserEventStreamListener (com.fitpay.android.api.sse.UserEventStreamListener)1 NotificationSyncRequest (com.fitpay.android.paymentdevice.events.NotificationSyncRequest)1 SyncInfo (com.fitpay.android.paymentdevice.models.SyncInfo)1 SyncRequest (com.fitpay.android.paymentdevice.models.SyncRequest)1 DeviceStatusMessage (com.fitpay.android.webview.events.DeviceStatusMessage)1 UserReceived (com.fitpay.android.webview.events.UserReceived)1 IOException (java.io.IOException)1