mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	* refactor microservices to machine-learning * Update tGithub issue template with correct task syntax * Added microservices container * Communicate between service based on queue system * added dependency * Fixed problem with having to import BullQueue into the individual service * Added todo * refactor server into monorepo with microservices * refactor database and entity to library * added simple migration * Move migrations and database config to library * Migration works in library * Cosmetic change in logging message * added user dto * Fixed issue with testing not able to find the shared library * Clean up library mapping path * Added webp generator to microservices * Update Github Action build latest * Fixed issue NPM cannot install due to conflict witl Bull Queue * format project with prettier * Modified docker-compose file * Add GH Action for Staging build: * Fixed GH action job name * Modified GH Action to only build & push latest when pushing to main * Added Test 2e2 Github Action * Added Test 2e2 Github Action * Implemented microservice to extract exif * Added cronjob to scan and generate webp thumbnail at midnight * Refactor to ireduce hit time to database when running microservices * Added error handling to asset services that handle read file from disk * Added video transcoding queue to process one video at a time * Fixed loading spinner on web while loading covering the info panel * Add mechanism to show new release announcement to web and mobile app (#209) * Added changelog page * Fixed issues based on PR comments * Fixed issue with video transcoding run on the server * Change entry point content for backward combatibility when starting up server * Added announcement box * Added error handling to failed silently when the app version checking is not able to make the request to GITHUB * Added new version announcement overlay * Update message * Added messages * Added logic to check and show announcement * Add method to handle saving new version * Added button to dimiss the acknowledge message * Up version for deployment to the app store
		
			
				
	
	
		
			134 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/gestures.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
import 'package:immich_mobile/shared/providers/release_info.provider.dart';
 | 
						|
import 'package:url_launcher/url_launcher.dart';
 | 
						|
 | 
						|
class VersionAnnouncementOverlay extends HookConsumerWidget {
 | 
						|
  const VersionAnnouncementOverlay({
 | 
						|
    Key? key,
 | 
						|
  }) : super(key: key);
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context, WidgetRef ref) {
 | 
						|
    void goToReleaseNote() async {
 | 
						|
      final Uri _url = Uri.parse('https://github.com/alextran1502/immich/releases/latest');
 | 
						|
      await launchUrl(_url);
 | 
						|
    }
 | 
						|
 | 
						|
    void onAcknowledgeTapped() {
 | 
						|
      ref.watch(releaseInfoProvider.notifier).acknowledgeNewVersion();
 | 
						|
    }
 | 
						|
 | 
						|
    return ValueListenableBuilder<bool>(
 | 
						|
      valueListenable: VersionAnnouncementOverlayController.appLoader.loaderShowingNotifier,
 | 
						|
      builder: (context, shouldShow, child) {
 | 
						|
        if (shouldShow) {
 | 
						|
          return Scaffold(
 | 
						|
            backgroundColor: Colors.black38,
 | 
						|
            body: Center(
 | 
						|
              child: ConstrainedBox(
 | 
						|
                constraints: const BoxConstraints(maxWidth: 307),
 | 
						|
                child: Wrap(
 | 
						|
                  children: [
 | 
						|
                    Card(
 | 
						|
                      child: Padding(
 | 
						|
                        padding: const EdgeInsets.all(30.0),
 | 
						|
                        child: Column(
 | 
						|
                          crossAxisAlignment: CrossAxisAlignment.start,
 | 
						|
                          children: [
 | 
						|
                            const Text(
 | 
						|
                              "New Server Version Available 🎉",
 | 
						|
                              style: TextStyle(
 | 
						|
                                fontSize: 16,
 | 
						|
                                fontFamily: 'WorkSans',
 | 
						|
                                fontWeight: FontWeight.bold,
 | 
						|
                                color: Colors.indigo,
 | 
						|
                              ),
 | 
						|
                            ),
 | 
						|
                            Padding(
 | 
						|
                              padding: const EdgeInsets.only(top: 16.0),
 | 
						|
                              child: RichText(
 | 
						|
                                text: TextSpan(
 | 
						|
                                  style: const TextStyle(
 | 
						|
                                      fontSize: 14, fontFamily: 'WorkSans', color: Colors.black87, height: 1.2),
 | 
						|
                                  children: <TextSpan>[
 | 
						|
                                    const TextSpan(
 | 
						|
                                      text: 'Hi friend, there is a new release of',
 | 
						|
                                    ),
 | 
						|
                                    const TextSpan(
 | 
						|
                                      text: ' Immich ',
 | 
						|
                                      style: TextStyle(
 | 
						|
                                        fontFamily: "SnowBurstOne",
 | 
						|
                                        color: Colors.indigo,
 | 
						|
                                        fontWeight: FontWeight.bold,
 | 
						|
                                      ),
 | 
						|
                                    ),
 | 
						|
                                    const TextSpan(
 | 
						|
                                      text: "please take your time to visit the ",
 | 
						|
                                    ),
 | 
						|
                                    TextSpan(
 | 
						|
                                      text: "release note",
 | 
						|
                                      style: const TextStyle(
 | 
						|
                                        decoration: TextDecoration.underline,
 | 
						|
                                      ),
 | 
						|
                                      recognizer: TapGestureRecognizer()..onTap = goToReleaseNote,
 | 
						|
                                    ),
 | 
						|
                                    const TextSpan(
 | 
						|
                                      text:
 | 
						|
                                          " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
 | 
						|
                                    )
 | 
						|
                                  ],
 | 
						|
                                ),
 | 
						|
                              ),
 | 
						|
                            ),
 | 
						|
                            Padding(
 | 
						|
                              padding: const EdgeInsets.only(top: 16.0),
 | 
						|
                              child: ElevatedButton(
 | 
						|
                                  style: ElevatedButton.styleFrom(
 | 
						|
                                    shape: const StadiumBorder(),
 | 
						|
                                    visualDensity: VisualDensity.standard,
 | 
						|
                                    primary: Colors.indigo,
 | 
						|
                                    onPrimary: Colors.grey[50],
 | 
						|
                                    elevation: 2,
 | 
						|
                                    padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25),
 | 
						|
                                  ),
 | 
						|
                                  onPressed: onAcknowledgeTapped,
 | 
						|
                                  child: const Text(
 | 
						|
                                    "Acknowledge",
 | 
						|
                                    style: TextStyle(
 | 
						|
                                      fontSize: 14,
 | 
						|
                                    ),
 | 
						|
                                  )),
 | 
						|
                            )
 | 
						|
                          ],
 | 
						|
                        ),
 | 
						|
                      ),
 | 
						|
                    ),
 | 
						|
                  ],
 | 
						|
                ),
 | 
						|
              ),
 | 
						|
            ),
 | 
						|
          );
 | 
						|
        } else {
 | 
						|
          return Container();
 | 
						|
        }
 | 
						|
      },
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
class VersionAnnouncementOverlayController {
 | 
						|
  static final VersionAnnouncementOverlayController appLoader = VersionAnnouncementOverlayController();
 | 
						|
  ValueNotifier<bool> loaderShowingNotifier = ValueNotifier(false);
 | 
						|
  ValueNotifier<String> loaderTextNotifier = ValueNotifier('error message');
 | 
						|
 | 
						|
  void show() {
 | 
						|
    loaderShowingNotifier.value = true;
 | 
						|
  }
 | 
						|
 | 
						|
  void hide() {
 | 
						|
    loaderShowingNotifier.value = false;
 | 
						|
  }
 | 
						|
}
 |