package io.sqsmap.sdk.example;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import io.sqsmap.sdk.NativeMapHost;
import io.sqsmap.sdk.SqsMapView;

/** Self-contained API24 example. Add matching native libraries to the application's jniLibs. */
public final class SqsMapViewExampleActivity extends Activity {
    private SqsMapView mapView;
    @Override public void onCreate(Bundle state){
        super.onCreate(state);mapView=new SqsMapView(this);
        mapView.setListener(new SqsMapView.Listener(){
            public void onReady(SqsMapView view,NativeMapHost host){
                // Reinitialize on every attachment/resume. No external provider, key or extra UI library.
                host.runScript("import {map} from 'sqsmap';map.setStyle(null);map.jumpTo({center:[0,0],zoom:3});"+
                    "map.addSource('example',{type:'geojson',data:{type:'FeatureCollection',features:["+
                    "{type:'Feature',properties:{},geometry:{type:'Polygon',coordinates:[[[-4,-4],[4,-4],[4,4],[-4,4],[-4,-4]]]}},"+
                    "{type:'Feature',properties:{},geometry:{type:'Point',coordinates:[0,0]}}]}});"+
                    "map.addLayer({id:'area',type:'fill',source:'example',paint:{'fill-color':'#e11d48','fill-opacity':0.65}});"+
                    "map.addLayer({id:'point',type:'circle',source:'example',paint:{'circle-color':'#2563eb','circle-radius':8}});"+
                    "await map.sqs.flush();export default {ready:true};").exceptionally(error->{
                        runOnUiThread(()->{if(view.isCurrent(host))Log.e("SqsMapExample","Script failed",error);});return null;
                    });
            }
            public void onError(SqsMapView view,Throwable error){Log.e("SqsMapExample","Map failed",error);}
        });setContentView(mapView);
    }
    @Override protected void onResume(){super.onResume();if(mapView!=null)mapView.resume();}
    @Override protected void onPause(){if(mapView!=null)mapView.pause();super.onPause();}
    @Override protected void onDestroy(){if(mapView!=null)mapView.destroy();super.onDestroy();}
}
