Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/mobile-app-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ jobs:
- name: Prepare Flutter dev compile inputs
working-directory: app
run: |
cp setup/prebuilt/firebase_options_local.dart lib/firebase_options_dev.dart
cp setup/prebuilt/firebase_options_local.dart lib/firebase_options_prod.dart
cp lib/firebase_options_local.dart lib/firebase_options_dev.dart
cp lib/firebase_options_local.dart lib/firebase_options_prod.dart
{
echo "API_BASE_URL="
echo "USE_WEB_AUTH=true"
Expand Down Expand Up @@ -262,8 +262,8 @@ jobs:
working-directory: app
run: |
mkdir -p android/app/src/dev/ android/app/src/prod/
cp setup/prebuilt/firebase_options_local.dart lib/firebase_options_dev.dart
cp setup/prebuilt/firebase_options_local.dart lib/firebase_options_prod.dart
cp lib/firebase_options_local.dart lib/firebase_options_dev.dart
cp lib/firebase_options_local.dart lib/firebase_options_prod.dart
cp setup/prebuilt/google-services-local.json android/app/src/dev/google-services.json
cp setup/prebuilt/google-services-local.json android/app/src/prod/google-services.json
cp setup/prebuilt/key.properties android/key.properties
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ src/recordings
/app/lib/firebase_options.dart
/app/lib/firebase_options_*.dart
!/app/lib/firebase_options_local.dart
/app/ios/Runner/Info-Dev.plist
/app/firebase.json

# Solidworks models
Expand Down
3 changes: 3 additions & 0 deletions app/ios/Flutter/prodDebug.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#include "Generated.xcconfig"
#include "Base.xcconfig"
#include "Custom.xcconfig"
// Keep production Google sign-in deterministic even when Custom.xcconfig is
// regenerated locally for a beta or developer build.
GOOGLE_REVERSE_CLIENT_ID=com.googleusercontent.apps.1031333818730-dusn243nct6i5rgfpfkj5mchuj1qnmde

ASSET_PREFIX=prod
BUNDLE_NAME=Omi
Expand Down
3 changes: 3 additions & 0 deletions app/ios/Flutter/prodProfile.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#include "Generated.xcconfig"
#include "Base.xcconfig"
#include "Custom.xcconfig"
// Keep production Google sign-in deterministic even when Custom.xcconfig is
// regenerated locally for a beta or developer build.
GOOGLE_REVERSE_CLIENT_ID=com.googleusercontent.apps.1031333818730-dusn243nct6i5rgfpfkj5mchuj1qnmde

ASSET_PREFIX=prod
BUNDLE_NAME=Omi
Expand Down
3 changes: 3 additions & 0 deletions app/ios/Flutter/prodRelease.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#include "Generated.xcconfig"
#include "Base.xcconfig"
#include "Custom.xcconfig"
// Keep production Google sign-in deterministic even when Custom.xcconfig is
// regenerated locally for a beta or developer build.
GOOGLE_REVERSE_CLIENT_ID=com.googleusercontent.apps.208440318997-ukinsq3sijhcetkhr26ssqp1terbq7as

ASSET_PREFIX=prod
BUNDLE_NAME=Omi
Expand Down
216 changes: 216 additions & 0 deletions app/ios/Runner/Info-Dev.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>daily-summary</string>
<string>com.friend-app-with-wearable.ios12.daily-summary</string>
<string>dev.flutter.background.refresh</string>
<string>com.pravera.flutter_foreground_task.refresh</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>$(BUNDLE_DISPLAY_NAME)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLocalizations</key>
<array>
<string>ar</string>
<string>bg</string>
<string>ca</string>
<string>cs</string>
<string>da</string>
<string>de</string>
<string>el</string>
<string>en</string>
<string>es</string>
<string>et</string>
<string>fi</string>
<string>fr</string>
<string>hi</string>
<string>hu</string>
<string>id</string>
<string>it</string>
<string>ja</string>
<string>ko</string>
<string>lt</string>
<string>lv</string>
<string>ms</string>
<string>nl</string>
<string>no</string>
<string>pl</string>
<string>pt</string>
<string>ro</string>
<string>ru</string>
<string>sk</string>
<string>sv</string>
<string>th</string>
<string>tr</string>
<string>uk</string>
<string>vi</string>
<string>zh</string>
</array>
<key>CFBundleName</key>
<string>$(BUNDLE_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>h.omi.me</string>
<key>CFBundleURLSchemes</key>
<array>
<string>https</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>h.omi.me</string>
<key>CFBundleURLSchemes</key>
<array>
<string>$(GOOGLE_REVERSE_CLIENT_ID)</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>omi.auth</string>
<key>CFBundleURLSchemes</key>
<array>
<string>$(AUTH_CALLBACK_SCHEME)</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>rayban-meta-callback</string>
<key>CFBundleURLSchemes</key>
<array>
<string>omirayban</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>FlutterDeepLinkingEnabled</key>
<false/>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>comgooglemaps</string>
<string>iosamap</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MWDAT</key>
<dict>
<key>AppLinkURLScheme</key>
<string>omirayban://</string>
<key>DAMEnabled</key>
<true/>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Omi uses Bluetooth to connect to your Omi wearable and stream its microphone audio to your phone — for example, to transcribe your meetings into notes and check the device's battery.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Omi uses Bluetooth to connect to your Omi wearable and stream its microphone audio to your phone — for example, to transcribe your meetings into notes and check the device's battery.</string>
<key>NSCalendarsFullAccessUsageDescription</key>
<string>Access most functions for calendar viewing and editing.</string>
<key>NSCalendarsUsageDescription</key>
<string>Access most functions for calendar viewing and editing.</string>
<key>NSCameraUsageDescription</key>
<string>Camera access is required to report issues</string>
<key>NSContactsUsageDescription</key>
<string>Access contacts for event attendee editing and to share conversation summaries via SMS.</string>
<key>NSHealthShareUsageDescription</key>
<string>Omi reads your steps, walking and running distance, active energy, heart rate, sleep, and workouts from Apple Health so you can ask about your fitness, sleep, and activity in Omi Chat. Omi never writes to Apple Health.</string>
<key>NSHealthUpdateUsageDescription</key>
<string>Omi does not write any data to Apple Health. This string is only present because iOS requires it when the HealthKit framework is linked.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>When creating your memories, we use your location for determining where they were created.</string>
<key>NSLocationUsageDescription</key>
<string>When creating your memories, we use your location for determining where they were created.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>When creating your memories, we use your location for determining where they were created.</string>
<key>NSMicrophoneUsageDescription</key>
<string>We need access to your microphone so you can share audio explanations of Bugs you find, and for voice commands.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library to allow you to upload and share photos through Instabug.</string>
<key>NSRemindersFullAccessUsageDescription</key>
<string>We need access to your reminders to export action items from Omi conversations.</string>
<key>NSRemindersUsageDescription</key>
<string>We need access to your reminders to export action items from Omi conversations.</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>We use speech recognition to convert your speech to text for processing on your device.</string>
<key>PermissionGroupNotification</key>
<string>You need to enable notifications to receive your pro-active feedback.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>location</string>
<string>bluetooth-central</string>
<string>fetch</string>
<string>processing</string>
<string>remote-notification</string>
<string>voip</string>
</array>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<false/>
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.meta.ar.wearable</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>WKCompanionAppBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>com.posthog.posthog.AUTO_INIT</key>
<false/>
</dict>
</plist>
11 changes: 10 additions & 1 deletion app/lib/pages/action_items/action_items_page.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:omi/utils/platform/platform_manager.dart';

Check warning on line 1 in app/lib/pages/action_items/action_items_page.dart

View workflow job for this annotation

GitHub Actions / Hygiene

Large changed file

app/lib/pages/action_items/action_items_page.dart is 2152 lines; consider splitting files over 800 lines.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

Expand All @@ -15,6 +15,7 @@
import 'package:omi/utils/l10n_extensions.dart';
import 'package:omi/utils/other/debouncer.dart';
import 'widgets/action_item_form_sheet.dart';
import 'widgets/action_item_shimmer_widget.dart';

// Re-export Goal from goals.dart for use in this file
export 'package:omi/backend/http/api/goals.dart' show Goal;
Expand Down Expand Up @@ -589,7 +590,15 @@
}

Widget _buildLoadingState() {
return const Center(child: CircularProgressIndicator(color: Colors.deepPurple));
return CustomScrollView(
controller: _scrollController,
physics: const NeverScrollableScrollPhysics(),
slivers: const [
SliverPadding(padding: EdgeInsets.only(top: 16)),
ActionItemsShimmerList(itemCount: 7),
SliverPadding(padding: EdgeInsets.only(bottom: 100)),
],
);
}

Widget _buildEmptyTasksList() {
Expand Down Expand Up @@ -1864,7 +1873,7 @@
}

@override
Widget build(BuildContext context) {

Check warning on line 1876 in app/lib/pages/action_items/action_items_page.dart

View workflow job for this annotation

GitHub Actions / Hygiene

Long function

Widget build(BuildContext context) is 185 lines; consider extracting focused helpers over 150 lines.
return Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Container(
Expand Down
20 changes: 17 additions & 3 deletions app/lib/pages/apps/page.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import 'dart:async';

import 'package:flutter/material.dart';

import 'package:provider/provider.dart';

import 'package:omi/backend/schema/app.dart';
import 'package:omi/pages/apps/explore_install_page.dart';
import 'package:omi/pages/apps/providers/add_app_provider.dart';
import 'package:omi/providers/app_provider.dart';
import 'package:omi/utils/logger.dart';
import 'package:omi/providers/connectivity_provider.dart';
import 'package:omi/utils/l10n_extensions.dart';

Expand All @@ -23,10 +25,22 @@ class AppsPageState extends State<AppsPage> with AutomaticKeepAliveClientMixin {

@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<AddAppProvider>().getCategories();
if (mounted) unawaited(_loadApps());
Comment thread
Git-on-my-level marked this conversation as resolved.
});
super.initState();
}

Future<void> _loadApps() async {
try {
final appProvider = context.read<AppProvider>();
await appProvider.getApps();
if (mounted) {
await appProvider.getPopularApps();
}
} catch (e, s) {
Logger.handle(e, s, message: 'Error loading apps page data');
}
}

void scrollToTop() {
Expand Down
Loading
Loading