import 'dart:convert';

import 'package:firebase_core/firebase_core.dart';
import 'package:flare_flutter/flare_actor.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/notification/notification_manger.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/app_notification.dart';
import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/pages/user/land_page.dart';

import 'login.dart';

class SplashScreen extends StatefulWidget {
  static const String id = '/splash';
  const SplashScreen({Key key}) : super(key: key);

  @override
  State<SplashScreen> createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {

  SettingProvider _settingProvider;
  UserProvider _userProvider;

  _goToUserScreen(User user){
    if(user.tokenLife != null && user.tokenLife.isAfter(DateTime.now())){
      _userProvider.user = user;
      // Navigator.of(context).pushNamed(Login.id);
      Navigator.of(context).pushNamed(LandPage.id);
    }
  }

  @override
  void initState() {
    Firebase.initializeApp();

    NotificationManger.initialisation(
          (notificationDetails) {
            AppNotification notification = AppNotification.fromJson(json.decode(notificationDetails.payload));
            if(notification.path == null || notification.path.isEmpty)
              return;
            Navigator.pushNamed(
                context,
                notification.path,
                arguments: notification.requestId
            );
          }
        , (id, title, body, payload) async {
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    _settingProvider = Provider.of<SettingProvider>(context,listen: false);
    _userProvider = Provider.of<UserProvider>(context,listen: false);
    return Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child: SizedBox(
          width: MediaQuery.of(context).size.width/1.1,
          child:  FlareActor(
            "assets/rives/atoms_splash.flr",
            fit: BoxFit.contain,
            animation: "splash",
            callback: (animation) async {
              Navigator.of(context).pushNamed(Login.id);
              if(_settingProvider.isLoaded && _settingProvider.user != null){
                _goToUserScreen(_settingProvider.user);
              }
            },
          ),
          //const Center(child: CircularProgressIndicator())

          // Image.asset("assets/images/logo.png",
          //   fit: BoxFit.contain,
          // ),
        ),
      ),
    );
  }
}
