Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/foundation.dart';
- import 'package:flutter/gestures.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_bloc/flutter_bloc.dart';
- import 'package:hi_foods_business/modules/socials/cubit/facebook_connect/facebook_connect_cubit.dart';
- import 'package:hi_foods_business/modules/socials/model/facebook_accountList_model.dart';
- import 'package:hi_foods_business/modules/socials/model/facebook_connect_model.dart';
- import 'package:hi_foods_business/modules/socials/repository/facebook_connect_repo.dart';
- import 'package:webview_flutter/webview_flutter.dart';
- import '../../../constants/api_constants.dart';
- import '../../../constants/color_constant.dart';
- import '../../auth/bloc/auth_cubit/auth_cubit.dart';
- class FacebookConnectSheetWidget extends StatefulWidget {
- final String jwt;
- const FacebookConnectSheetWidget({
- required this.jwt,
- super.key,
- });
- @override
- State<FacebookConnectSheetWidget> createState() =>
- _FacebookConnectSheetWidgetState();
- }
- class _FacebookConnectSheetWidgetState
- extends State<FacebookConnectSheetWidget> {
- late final WebViewController webViewController;
- String userAgent =
- "Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";
- bool processing = false;
- bool instaprocessing = false;
- @override
- void initState() {
- webViewController = WebViewController()
- ..setJavaScriptMode(JavaScriptMode.unrestricted)
- ..setBackgroundColor(const Color(0x00000000))
- ..setUserAgent(userAgent)
- ..enableZoom(true)
- ..setNavigationDelegate(
- NavigationDelegate(
- onProgress: (int progress) {},
- onPageStarted: (String url) {},
- onPageFinished: (String url) {},
- onWebResourceError: (WebResourceError error) {},
- onUrlChange: (UrlChange url) async {
- final uri = Uri.parse(url.url ?? "https://hyteno.com");
- final queryParams = uri.queryParameters;
- late FacebookConnectModel facebookConnectModel;
- if (queryParams['fbsuccess'] == "true") {
- facebookConnectModel = FacebookConnectModel(
- accessToken: queryParams['accessToken']!,
- expiryDate: queryParams['expiryDate']!,
- refreshToken: queryParams['refreshToken']!,
- pageToken: queryParams['pageToken'] ??
- queryParams['page_token'] ??
- "",
- facebookPageId:
- queryParams['facebook_account_id'].toString());
- processing = true;
- String refereshToken = await context
- .read<FacebookConnectRepo>()
- .fetchRefereshToken(
- accessToken: facebookConnectModel.accessToken);
- facebookConnectModel =
- facebookConnectModel.copyWith(accessToken: refereshToken);
- final FacebookAccount? account = await context
- .read<FacebookConnectCubit>()
- .facebookConnectRepo
- .fetchPageToken(
- access_token: facebookConnectModel.accessToken,
- page_id: facebookConnectModel.facebookPageId!);
- if (account != null) {
- context
- .read<FacebookConnectCubit>()
- .setFacebookAccount(facebookAccount: account);
- }
- context.read<FacebookConnectCubit>().updateFacebookConnectModel(
- facebookConnectModel: facebookConnectModel);
- await context.read<AuthCubit>().updateMetaInfo(
- key: "facebook", value: facebookConnectModel.toString());
- context
- .read<FacebookConnectCubit>()
- .fetchFacebookPost(page_token: facebookConnectModel.pageToken)
- .then((value) {
- context
- .read<FacebookConnectCubit>()
- .updateFacebookConnectStatus(
- facebookConnectStaus: FacebookConnectStaus.connected);
- });
- processing = false;
- }
- if (queryParams['fbsuccess'] == "true" &&
- queryParams['instasuccess'] == "true") {
- instaprocessing = true;
- facebookConnectModel = facebookConnectModel.copyWith(
- instagramPageId: queryParams['instagram_account_id']);
- context.read<FacebookConnectCubit>().updateFacebookConnectModel(
- facebookConnectModel: facebookConnectModel);
- await context.read<AuthCubit>().updateMetaInfo(
- key: "facebook", value: facebookConnectModel.toString());
- Navigator.pop(context);
- context.read<FacebookConnectCubit>().updateInstagramConnectStatus(
- instagramConnectStatus: InstaConnectStaus.connected);
- context.read<FacebookConnectCubit>().fetchInstagramPost(
- instaId: queryParams["instagram_account_id"].toString(),
- accessToken: queryParams['accessToken'] ?? "");
- instaprocessing = false;
- }
- if (queryParams['fbsuccess'] == "true" &&
- queryParams['instasuccess'] == "false") {
- Navigator.pop(context);
- }
- },
- ),
- )
- ..loadRequest(
- Uri.parse('${ApiContants.facebookConnectUrl}?jwt=${widget.jwt}'));
- super.initState();
- }
- final Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers = {
- Factory(() => EagerGestureRecognizer())
- };
- @override
- Widget build(BuildContext context) {
- return Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(12), topRight: Radius.circular(12)),
- color: ColorConstant.backgroundColor,
- ),
- width: MediaQuery.of(context).size.width,
- child: Column(
- children: [
- Container(
- height: 50,
- width: MediaQuery.of(context).size.width,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(12), topRight: Radius.circular(12)),
- color: ColorConstant.appbarbackgroundColor,
- ),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- InkWell(
- onTap: () {
- if (instaprocessing != true && processing != true) {
- Navigator.pop(context);
- }
- },
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: Icon(Icons.close),
- ),
- )
- ],
- ),
- ),
- Expanded(
- child: Container(
- width: MediaQuery.of(context).size.width,
- child: WebViewWidget(
- gestureRecognizers: gestureRecognizers,
- controller: webViewController),
- ),
- ),
- ],
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement