mymuseum-visitapp/lib/Components/AdminPopup.dart

172 lines
6.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mymuseum_visitapp/Components/GlassesDebugPanel.dart';
import 'package:mymuseum_visitapp/Components/check_input_container.dart';
import 'package:mymuseum_visitapp/Components/rounded_button.dart';
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
import 'package:mymuseum_visitapp/Models/visitContext.dart';
import 'package:mymuseum_visitapp/Services/meta_glasses_service.dart';
import 'package:mymuseum_visitapp/app_context.dart';
import 'package:provider/provider.dart';
import '../constants.dart';
class AdminPopup extends StatefulWidget {
const AdminPopup({
Key? key,
}) : super(key: key);
@override
State<AdminPopup> createState() => _AdminPopupState();
}
class _AdminPopupState extends State<AdminPopup> {
final TextEditingController _controller = TextEditingController();
bool isPasswordOk = false;
String password = "ADMIN2024!"; //FORT2023!
VisitAppContext? visitAppContext;
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
final appContext = Provider.of<AppContext>(context);
visitAppContext = appContext.getContext() as VisitAppContext;
isPasswordOk = visitAppContext!.isAdmin!;
return Container(
width: size.width*0.7,
height: isPasswordOk ? size.height*0.6 : size.height*0.15,
margin: const EdgeInsets.all(kDefaultPadding),
child: isPasswordOk ? Column(
children: [
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CheckInputContainer(label: "Mode admin", isChecked: visitAppContext!.isAdmin, onChanged: (value) {
visitAppContext!.isAdmin = value;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
}),
),
),
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CheckInputContainer(label: "Langues", isChecked: visitAppContext!.isAllLanguages, onChanged: (value) {
visitAppContext!.isAllLanguages = value;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
}),
),
),
const Text("Audios qui ne fonctionnent pas :"),
const SizedBox(
height: 15,
),
Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
border: Border.all(width: 1.5, color: kSecondGrey),
borderRadius: BorderRadius.circular(10.0),
),
height: size.height*0.25,
width: size.width*0.7,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if(visitAppContext!.audiosNotWorking.isEmpty)
const Padding(
padding: EdgeInsets.all(8.0),
child: Text("Rien mais téléchargez la visite pour être sûr"),
),
if(visitAppContext!.audiosNotWorking.isNotEmpty)
for(var audio in visitAppContext!.audiosNotWorking)
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(audio.label!.isNotEmpty ? audio.label! : audio.id!),
)
],
)
),
),
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: RoundedButton(
text: "Reset articles lu",
color: kBackgroundSecondGrey,
textColor: kBackgroundLight,
icon: Icons.refresh,
press: () {
DatabaseHelper.instance.clearTable(DatabaseTableType.articleRead);
visitAppContext!.readSections = [];
appContext.setContext(visitAppContext!);
},
fontSize: 18,
horizontal: 20,
vertical: 5
),
),
),
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ValueListenableBuilder<GlassesState>(
valueListenable: MetaGlassesService.instance.state,
builder: (_, state, __) => RoundedButton(
text: "Lunettes • ${state.name}",
color: state == GlassesState.streaming || state == GlassesState.connected
? Colors.green[700]!
: Colors.orange[700]!,
textColor: Colors.white,
icon: Icons.smart_toy_outlined,
press: () {
Navigator.of(context).pop();
GlassesDebugPanel.show(context);
},
fontSize: 16,
horizontal: 20,
vertical: 5,
),
),
),
)
],
) :
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Mot de passe admin"),
SizedBox(
width: size.width*0.65,
height: size.height *0.1,
child: TextFormField(
controller: _controller,
onChanged: (value) {
if(value == password) {
setState(() {
isPasswordOk = true;
visitAppContext!.isAdmin = true;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
});
}
},
//style: const TextStyle(color: Colors.white),
obscureText: true,
enableSuggestions: false,
autocorrect: false,
),
),
],
),
);
}
}