mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Add support for banner timeout
This commit is contained in:
		@@ -1,5 +1,8 @@
 | 
			
		||||
import 'dart:async';
 | 
			
		||||
 | 
			
		||||
import 'package:comunic/helpers/server_config_helper.dart';
 | 
			
		||||
import 'package:comunic/models/server_config.dart';
 | 
			
		||||
import 'package:comunic/utils/date_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/intl_utils.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:url_launcher/url_launcher.dart';
 | 
			
		||||
@@ -14,17 +17,37 @@ class BannerWidget extends StatefulWidget {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _BannerWidgetState extends State<BannerWidget> {
 | 
			
		||||
  Timer _timer;
 | 
			
		||||
 | 
			
		||||
  bool get _shouldShowBanner => showBanner && !_bannerDismissed;
 | 
			
		||||
 | 
			
		||||
  void _hideBanner() {
 | 
			
		||||
    setState(() => _bannerDismissed = true);
 | 
			
		||||
    if (this.mounted) setState(() => _bannerDismissed = true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _openLink() {
 | 
			
		||||
    launch(srvConfig.banner.link);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  void initState() {
 | 
			
		||||
    super.initState();
 | 
			
		||||
 | 
			
		||||
    if (_shouldShowBanner && srvConfig.banner.expire != null) {
 | 
			
		||||
      _timer = Timer(
 | 
			
		||||
          Duration(seconds: srvConfig.banner.expire - time()), _hideBanner);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  void dispose() {
 | 
			
		||||
    if (_timer != null) _timer.cancel();
 | 
			
		||||
    super.dispose();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    if (!showBanner || _bannerDismissed) return Container();
 | 
			
		||||
    if (!_shouldShowBanner) return Container();
 | 
			
		||||
 | 
			
		||||
    final banner = srvConfig.banner;
 | 
			
		||||
    return Card(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user