add cross login from other regional
This commit is contained in:
@@ -4,7 +4,10 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:intl/date_symbol_data_local.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:mitra_corporate/model/aliases_model.dart';
|
||||
import 'package:mitra_corporate/provider/aliases_provider.dart';
|
||||
import 'package:mitra_corporate/provider/menu_provider.dart';
|
||||
import 'package:mitra_corporate/provider/pindah_branch_provider.dart';
|
||||
import 'package:mitra_corporate/widgets/custom_text_field.dart';
|
||||
import 'package:loading_animation_widget/loading_animation_widget.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
@@ -14,6 +17,7 @@ import '../app/route.dart';
|
||||
import '../provider/auth_provider.dart';
|
||||
import '../screen/login/change_password_provider.dart';
|
||||
import '../screen/login/logout_provider.dart';
|
||||
import 'dart:html' as html;
|
||||
import 'custom_snackbar_widget.dart';
|
||||
|
||||
class Header extends HookConsumerWidget {
|
||||
@@ -27,6 +31,8 @@ class Header extends HookConsumerWidget {
|
||||
final isExpand = ref.watch(sideBarExpandProvider);
|
||||
final auth = ref.watch(authProvider);
|
||||
final date = useState("");
|
||||
final listAliases = useState<List<AliasesModel>>(List.empty());
|
||||
|
||||
ref.listen(logoutProvider, (prev, next) async {
|
||||
if (next is LogoutStateLoading) {
|
||||
} else if (next is LogoutStateError) {
|
||||
@@ -41,6 +47,13 @@ class Header extends HookConsumerWidget {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
fetchAliases() async {
|
||||
String token = auth?.token ?? "0";
|
||||
|
||||
ref.read(aliasesDataProvider.notifier).getAliases(token: token);
|
||||
}
|
||||
|
||||
useEffect(() {
|
||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
|
||||
DateTime now = DateTime.now();
|
||||
@@ -48,9 +61,45 @@ class Header extends HookConsumerWidget {
|
||||
date.value = DateFormat('EEEE, d MMMM yyyy', "id").format(now);
|
||||
print(DateFormat('EEEE, d MMMM yyyy', "id").format(now));
|
||||
});
|
||||
fetchAliases();
|
||||
});
|
||||
return () {};
|
||||
}, []);
|
||||
|
||||
ref.listen(aliasesDataProvider, (pref, next) {
|
||||
if (next is AliasesStateInit) {
|
||||
|
||||
} else if (next is AliasesStateLoading) {
|
||||
|
||||
} else if (next is AliasesStateError) {
|
||||
SanckbarWidget(context, next.message ?? "", snackbarType.error);
|
||||
} else if (next is AliasesStateDone) {
|
||||
listAliases.value = next.model;
|
||||
}
|
||||
});
|
||||
|
||||
void openNewTab(String url) {
|
||||
html.window.open(url, '_blank');
|
||||
}
|
||||
|
||||
moveBranch(String userID, String username, String targetUrl) {
|
||||
String token = auth?.token ?? "0";
|
||||
ref.read(reqCabangTokenProvider.notifier).requestTokenCabang(token: token, userID: userID, username: username, targetUrl: targetUrl);
|
||||
}
|
||||
|
||||
ref.listen(reqCabangTokenProvider, (prev, next) {
|
||||
if (next is ReqCabangStateInit) {
|
||||
|
||||
} else if (next is ReqCabangStateLoading) {
|
||||
|
||||
} else if (next is ReqCabangStateError) {
|
||||
SanckbarWidget(context, next.message ?? "", snackbarType.error);
|
||||
} else if (next is ReqCabangStateDone) {
|
||||
var url = next.model;
|
||||
openNewTab("http://${url}");
|
||||
}
|
||||
});
|
||||
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
alignment: Alignment.center,
|
||||
@@ -185,6 +234,27 @@ class Header extends HookConsumerWidget {
|
||||
style: Constant.body3_400(context: context),
|
||||
),
|
||||
),
|
||||
...listAliases.value.isEmpty
|
||||
? []
|
||||
: listAliases.value.map((alias) {
|
||||
return MenuItemButton(
|
||||
leadingIcon: Icon(
|
||||
EvaIcons.globe2Outline,
|
||||
color: Constant.primaryRed,
|
||||
),
|
||||
child: Text(
|
||||
alias.userAliasesTargetRegionalName ?? '',
|
||||
style: Constant.body3_400(context: context),
|
||||
),
|
||||
onPressed: () {
|
||||
moveBranch(
|
||||
alias.userAliasesTargetUserID ?? "",
|
||||
alias.userAliasesTargetUsername ?? "",
|
||||
alias.userAliasesTargetIP ?? ""
|
||||
);
|
||||
},
|
||||
);
|
||||
}).toList(),
|
||||
Container(
|
||||
margin: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: Center(
|
||||
|
||||
Reference in New Issue
Block a user