package com.shukria.softpos;

import android.app.Application;
import android.util.Log;

import androidx.annotation.NonNull;

import com.mypinpad.tsdk.api.TerminalSdk;
import com.mypinpad.tsdk.api.callbacks.TerminalLogger;
import com.shukria.softpos.terminal.TerminalProvider;

import java.util.function.Function;

public class ExampleApp extends Application {
    public TsdkLogger logger = new TsdkLogger();

    public final TerminalProvider terminalProvider = new TerminalProvider(this);

    @Override
    public void onCreate() {
        super.onCreate();

        if (!TerminalSdk.isApplicationInitAllowed())
            return;

        AssetInjection.INSTANCE.inject(getAssets());
        // Setting the logger first so that it will capture any logs that may come from
        // 'initialise'
        TerminalSdk.setLogger(logger);
        // Setting redacted logger to capture any important logs especially in release
        // build
        TerminalSdk.setRedactedLogger(logger);
    }

    public static class TsdkLogger implements TerminalLogger {

        public static Function<String, Void> DEFAULT_SINK = s -> {
            Log.d("TSDK", s);
            return null;
        };

        public Function<String, Void> sink = DEFAULT_SINK;

        @Override
        public void log(@NonNull String out) {
            sink.apply(out);
        }
    }
}