浏览代码

Added icons logo

Alex Tran 3 年之前
父节点
当前提交
09964e4b16
共有 30 个文件被更改,包括 109 次插入15 次删除
  1. 1 1
      mobile/android/app/src/main/AndroidManifest.xml
  2. 二进制
      mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  3. 二进制
      mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  4. 二进制
      mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  5. 二进制
      mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  6. 二进制
      mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  7. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
  8. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
  9. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
  10. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
  11. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
  12. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
  13. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
  14. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
  15. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
  16. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
  17. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
  18. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
  19. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
  20. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
  21. 二进制
      mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
  22. 1 1
      mobile/ios/Runner/Info.plist
  23. 2 3
      mobile/lib/modules/home/ui/draggable_scrollbar.dart
  24. 2 2
      mobile/lib/modules/home/ui/immich_sliver_appbar.dart
  25. 4 3
      mobile/lib/modules/home/ui/thumbnail_image.dart
  26. 44 2
      mobile/lib/modules/home/views/home_page.dart
  27. 1 1
      mobile/lib/modules/login/ui/login_form.dart
  28. 4 1
      mobile/makefile
  29. 43 1
      mobile/pubspec.lock
  30. 7 0
      mobile/pubspec.yaml

+ 1 - 1
mobile/android/app/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.example.immich_mobile">
     <application
-            android:label="immich_mobile"
+            android:label="Immich"
             android:name="${applicationName}"
             android:icon="@mipmap/ic_launcher">
         <activity

二进制
mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png


二进制
mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png


二进制
mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png


二进制
mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


二进制
mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png


二进制
mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png


+ 1 - 1
mobile/ios/Runner/Info.plist

@@ -5,7 +5,7 @@
     <key>CFBundleDevelopmentRegion</key>
     <string>$(DEVELOPMENT_LANGUAGE)</string>
     <key>CFBundleDisplayName</key>
-    <string>Immich Mobile</string>
+    <string>Immich</string>
     <key>CFBundleExecutable</key>
     <string>$(EXECUTABLE_NAME)</string>
     <key>CFBundleIdentifier</key>

+ 2 - 3
mobile/lib/modules/home/ui/draggable_scrollbar.dart

@@ -1,6 +1,5 @@
 import 'dart:async';
 
-import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 
 /// Build the Scroll Thumb and label using the current configuration
@@ -166,7 +165,7 @@ class DraggableScrollbar extends StatefulWidget {
     }) {
       final scrollThumb = CustomPaint(
         key: scrollThumbKey,
-        foregroundPainter: ArrowCustomPainter(Colors.grey),
+        foregroundPainter: ArrowCustomPainter(Colors.white),
         child: Material(
           elevation: 4.0,
           child: Container(
@@ -348,7 +347,7 @@ class _DraggableScrollbarState extends State<DraggableScrollbar> with TickerProv
 
   double get barMaxScrollExtent => context.size!.height - widget.heightScrollThumb;
 
-  double get barMinScrollExtent => 0.0;
+  double get barMinScrollExtent => 0;
 
   double get viewMaxScrollExtent => widget.controller.position.maxScrollExtent;
 

+ 2 - 2
mobile/lib/modules/home/ui/immich_sliver_appbar.dart

@@ -105,8 +105,8 @@ class ImmichSliverAppBar extends ConsumerWidget {
           statusBarColor: Colors.indigo,
 
           // Status bar brightness (optional)
-          statusBarIconBrightness: Brightness.dark, // For Android (dark icons)
-          statusBarBrightness: Brightness.light, // For iOS (dark icons)
+          statusBarIconBrightness: Brightness.light, // For Android (dark icons)
+          statusBarBrightness: Brightness.dark,
         ),
       ),
     );

+ 4 - 3
mobile/lib/modules/home/ui/thumbnail_image.dart

@@ -5,7 +5,6 @@ import 'package:hive_flutter/hive_flutter.dart';
 import 'package:immich_mobile/constants/hive_box.dart';
 import 'package:immich_mobile/shared/models/immich_asset.model.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:transparent_image/transparent_image.dart';
 
 class ThumbnailImage extends StatelessWidget {
   final ImmichAsset asset;
@@ -17,7 +16,6 @@ class ThumbnailImage extends StatelessWidget {
     var box = Hive.box(userInfoBox);
     var thumbnailRequestUrl =
         '${box.get(serverEndpointKey)}/asset/file?aid=${asset.deviceAssetId}&did=${asset.deviceId}&isThumb=true';
-
     return GestureDetector(
       onTap: () {
         AutoRouter.of(context).push(
@@ -44,7 +42,10 @@ class ThumbnailImage extends StatelessWidget {
             scale: 0.2,
             child: CircularProgressIndicator(value: downloadProgress.progress),
           ),
-          errorWidget: (context, url, error) => const Icon(Icons.error),
+          errorWidget: (context, url, error) {
+            debugPrint("Error Loading Thumbnail Widget $error");
+            return const Icon(Icons.error);
+          },
         ),
       ),
     );

+ 44 - 2
mobile/lib/modules/home/views/home_page.dart

@@ -84,6 +84,7 @@ class HomePage extends HookConsumerWidget {
           int? currentMonth = DateTime.tryParse(dateTitle)?.month;
           int? previousMonth = DateTime.tryParse(lastGroupDate)?.month;
 
+          // Add Monthly Title Group if started at the beginning of the month
           if ((currentMonth! - previousMonth!) != 0) {
             var monthTitleText = DateFormat('MMMM, y').format(DateTime.parse(dateTitle));
 
@@ -92,10 +93,12 @@ class HomePage extends HookConsumerWidget {
             );
           }
 
+          // Add Daily Title Group
           imageGridGroup.add(
-            _buildDateGroupTitle(dateTitle),
+            DailyTitleText(dateTitle: dateTitle),
           );
 
+          // Add Image Group
           imageGridGroup.add(
             ImageGrid(assetGroup: assetGroup),
           );
@@ -121,8 +124,9 @@ class HomePage extends HookConsumerWidget {
           //   return Text(scrollLabelText.value);
           // },
           // labelConstraints: const BoxConstraints.tightFor(width: 200.0, height: 30.0),
+          backgroundColor: Theme.of(context).primaryColor,
           controller: _scrollController,
-          heightScrollThumb: 40.0,
+          heightScrollThumb: 48.0,
           child: CustomScrollView(
             controller: _scrollController,
             slivers: [
@@ -166,3 +170,41 @@ class MonthlyTitleText extends StatelessWidget {
     );
   }
 }
+
+class DailyTitleText extends StatelessWidget {
+  const DailyTitleText({
+    Key? key,
+    required this.dateTitle,
+  }) : super(key: key);
+
+  final String dateTitle;
+
+  @override
+  Widget build(BuildContext context) {
+    var currentYear = DateTime.now().year;
+    var groupYear = DateTime.parse(dateTitle).year;
+    var formatDateTemplate = currentYear == groupYear ? 'E, MMM dd' : 'E, MMM dd, yyyy';
+    var dateText = DateFormat(formatDateTemplate).format(DateTime.parse(dateTitle));
+
+    return SliverToBoxAdapter(
+      child: Padding(
+        padding: const EdgeInsets.only(top: 24.0, bottom: 24.0, left: 3.0),
+        child: Row(
+          children: [
+            Padding(
+              padding: const EdgeInsets.only(left: 8.0, bottom: 5.0, top: 5.0),
+              child: Text(
+                dateText,
+                style: const TextStyle(
+                  fontSize: 14,
+                  fontWeight: FontWeight.bold,
+                  color: Colors.black87,
+                ),
+              ),
+            ),
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 1 - 1
mobile/lib/modules/login/ui/login_form.dart

@@ -12,7 +12,7 @@ class LoginForm extends HookConsumerWidget {
   Widget build(BuildContext context, WidgetRef ref) {
     final usernameController = useTextEditingController(text: 'testuser@email.com');
     final passwordController = useTextEditingController(text: 'password');
-    final serverEndpointController = useTextEditingController(text: 'http://192.168.1.103:3000');
+    final serverEndpointController = useTextEditingController(text: 'http://192.168.1.216:3000');
 
     return Center(
       child: ConstrainedBox(

+ 4 - 1
mobile/makefile

@@ -2,4 +2,7 @@ build:
 	flutter packages pub run build_runner build
 
 watch:
-	flutter packages pub run build_runner watch
+	flutter packages pub run build_runner watch
+
+create_app_icon:
+	flutter pub run flutter_launcher_icons:main

+ 43 - 1
mobile/pubspec.lock

@@ -15,6 +15,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "3.2.0"
+  archive:
+    dependency: transitive
+    description:
+      name: archive
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.1.11"
   args:
     dependency: transitive
     description:
@@ -321,6 +328,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.18.2"
+  flutter_launcher_icons:
+    dependency: "direct main"
+    description:
+      name: flutter_launcher_icons
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.9.2"
   flutter_lints:
     dependency: "direct dev"
     description:
@@ -429,6 +443,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "4.0.0"
+  image:
+    dependency: transitive
+    description:
+      name: image
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.1.1"
   intl:
     dependency: "direct main"
     description:
@@ -478,6 +499,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.12.11"
+  material_color_utilities:
+    dependency: transitive
+    description:
+      name: material_color_utilities
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.1.3"
   meta:
     dependency: transitive
     description:
@@ -576,6 +604,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "3.4.0"
+  petitparser:
+    dependency: transitive
+    description:
+      name: petitparser
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "4.4.0"
   photo_manager:
     dependency: "direct main"
     description:
@@ -755,7 +790,7 @@ packages:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.4.3"
+    version: "0.4.8"
   timing:
     dependency: transitive
     description:
@@ -840,6 +875,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.2.0"
+  xml:
+    dependency: transitive
+    description:
+      name: xml
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "5.3.1"
   yaml:
     dependency: transitive
     description:

+ 7 - 0
mobile/pubspec.yaml

@@ -26,6 +26,7 @@ dependencies:
   exif: ^3.1.1
   transparent_image: ^2.0.0
   visibility_detector: ^0.2.2
+  flutter_launcher_icons: "^0.9.2"
 
 dev_dependencies:
   flutter_test:
@@ -39,3 +40,9 @@ flutter:
   uses-material-design: true
   assets:
     - assets/
+
+flutter_icons:
+  image_path_android: "assets/immich-logo-no-outline.png"
+  image_path_ios: "assets/immich-logo-no-outline.png"
+  android: true # can specify file name here e.g. "ic_launcher"
+  ios: true # can specify file name here e.g. "My-Launcher-Icon