package com.opentokreactnative;

import android.view.Gravity;
import android.widget.FrameLayout;
import android.opengl.GLSurfaceView;

import com.facebook.react.uimanager.ThemedReactContext;
import com.opentok.android.BaseVideoRenderer;
import com.opentok.android.Publisher;

import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by manik on 1/10/18.
 */

public class OTPublisherLayout extends FrameLayout{

    public OTRN sharedState;

    public OTPublisherLayout(ThemedReactContext reactContext) {

        super(reactContext);
        sharedState = OTRN.getSharedState();
    }

    public void createPublisherView(String publisherId) {

        ConcurrentHashMap<String, Publisher> mPublishers = sharedState.getPublishers();
        ConcurrentHashMap<String, String> androidOnTopMap = sharedState.getAndroidOnTopMap();
        ConcurrentHashMap<String, String> androidZOrderMap = sharedState.getAndroidZOrderMap();
        String pubOrSub = "";
        String zOrder = "";
        Publisher mPublisher = mPublishers.get(publisherId);
        if (mPublisher != null) {
            if (androidOnTopMap.get(mPublisher.getSession().getSessionId()) != null) {
                pubOrSub = androidOnTopMap.get(mPublisher.getSession().getSessionId());
            }
            if (androidZOrderMap.get(mPublisher.getSession().getSessionId()) != null) {
                zOrder = androidZOrderMap.get(mPublisher.getSession().getSessionId());
            }
            mPublisher.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE,
                    BaseVideoRenderer.STYLE_VIDEO_FILL);
            FrameLayout mPublisherViewContainer = new FrameLayout(getContext());
            if (pubOrSub.equals("publisher") && mPublisher.getView() instanceof GLSurfaceView) {
                if (zOrder.equals("mediaOverlay")) {
                    ((GLSurfaceView) mPublisher.getView()).setZOrderMediaOverlay(true);
                } else {
                    ((GLSurfaceView) mPublisher.getView()).setZOrderOnTop(true);
                }
            }
            ConcurrentHashMap<String, FrameLayout> mPublisherViewContainers = sharedState.getPublisherViewContainers();
            mPublisherViewContainers.put(publisherId, mPublisherViewContainer);
            addView(mPublisherViewContainer, 0);
            mPublisherViewContainer.addView(mPublisher.getView());
            requestLayout();
        }

    }

}