Skip to content

Commit

Permalink
Merge pull request #92 from team-telnyx/WEBRTC-2415
Browse files Browse the repository at this point in the history
Login UI Changes
  • Loading branch information
Oliver-Zimmerman authored Jan 22, 2025
2 parents bef7438 + 9c2bfa7 commit dc26e7b
Show file tree
Hide file tree
Showing 19 changed files with 325 additions and 115 deletions.
26 changes: 13 additions & 13 deletions .idea/libraries/Flutter_Plugins.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

File renamed without changes
8 changes: 0 additions & 8 deletions assets/telnyx_logo.svg

This file was deleted.

49 changes: 23 additions & 26 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_callkit_incoming/entities/call_event.dart';
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
import 'package:flutter_fgbg/flutter_fgbg.dart';
import 'package:telnyx_flutter_webrtc/main_view_model.dart';
import 'package:telnyx_flutter_webrtc/view/screen/homes_screen.dart';
import 'package:telnyx_flutter_webrtc/view/telnyx_client_view_model.dart';
import 'package:telnyx_flutter_webrtc/service/notification_service.dart';
import 'package:telnyx_flutter_webrtc/view/screen/call_screen.dart';
import 'package:telnyx_flutter_webrtc/view/screen/home_screen.dart';
import 'package:telnyx_flutter_webrtc/view/screen/login_screen.dart';
import 'package:logger/logger.dart';
import 'package:provider/provider.dart';
import 'package:telnyx_webrtc/model/push_notification.dart';
Expand All @@ -23,7 +23,7 @@ import 'package:telnyx_flutter_webrtc/utils/theme.dart';
import 'package:telnyx_flutter_webrtc/firebase_options.dart';

final logger = Logger();
final mainViewModel = MainViewModel();
final txClientViewModel = TelnyxClientViewModel();
const MOCK_USER = '<MOCK_USER>';
const MOCK_PASSWORD = '<MOCK_PASSWORD>';
const CALL_MISSED_TIMEOUT = 30;
Expand Down Expand Up @@ -73,7 +73,7 @@ class AppInitializer {
final metadata = event.body['extra']['metadata'];
if (metadata == null || (incomingPushCall && fromBackground)) {
logger.i('Accepted Call Directly');
await mainViewModel.accept();
await txClientViewModel.accept();

/// Reset the incomingPushCall flag and fromBackground flag
incomingPushCall = false;
Expand All @@ -91,7 +91,7 @@ class AppInitializer {
final metadata = event.body['extra']['metadata'];
if (metadata == null) {
logger.i('Decline Call Directly');
mainViewModel.endCall();
txClientViewModel.endCall();
} else {
logger.i('Received push Call for iOS $metadata');
final data = metadata as Map<dynamic, dynamic>;
Expand All @@ -100,11 +100,11 @@ class AppInitializer {
}
break;
case Event.actionCallEnded:
mainViewModel.endCall();
txClientViewModel.endCall();
logger.i('actionCallEnded :: call ended');
break;
case Event.actionCallTimeout:
mainViewModel.endCall();
txClientViewModel.endCall();
logger.i('Decline Call');
break;
case Event.actionCallCallback:
Expand Down Expand Up @@ -230,7 +230,7 @@ Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {

logger.i('iOS notification token :: $token');
}
final credentialConfig = await mainViewModel.getCredentialConfig();
final credentialConfig = await txClientViewModel.getCredentialConfig();
telnyxClient.handlePushNotification(
pushMetaData,
credentialConfig,
Expand Down Expand Up @@ -269,7 +269,7 @@ Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
break;
}
});
mainViewModel.updateCallFromPush(true);
txClientViewModel.updateCallFromPush(true);
}

@pragma('vm:entry-point')
Expand All @@ -279,24 +279,24 @@ Future<void> main() async {
await AppInitializer().initialize();
}

final credentialConfig = await mainViewModel.getCredentialConfig();
final credentialConfig = await txClientViewModel.getCredentialConfig();
runApp(
FGBGNotifier(
onEvent: (FGBGType type) => switch (type) {
FGBGType.foreground => {
logger.i('We are in the foreground, CONNECTING'),
// Check if we are from push, if we are do nothing, reconnection will happen there in handlePush. Otherwise connect
if (!mainViewModel.callFromPush)
if (!txClientViewModel.callFromPush)
{
mainViewModel.login(credentialConfig),
txClientViewModel.login(credentialConfig),
},
},
},
FGBGType.background => {
logger.i(
'We are in the background setting fromBackground == true, DISCONNECTING',
),
fromBackground = true,
mainViewModel.disconnect(),
fromBackground = true,
txClientViewModel.disconnect(),
}
},
child: const MyApp(),
Expand All @@ -305,7 +305,7 @@ Future<void> main() async {
}

Future<void> handlePush(Map<dynamic, dynamic> data) async {
mainViewModel.updateCallFromPush(true);
txClientViewModel.updateCallFromPush(true);

logger.i('Handle Push Init');
String? token;
Expand All @@ -320,8 +320,8 @@ Future<void> handlePush(Map<dynamic, dynamic> data) async {
pushMetaData = PushMetaData.fromJson(data);
logger.i('iOS notification token :: $token');
}
final credentialConfig = await mainViewModel.getCredentialConfig();
mainViewModel
final credentialConfig = await txClientViewModel.getCredentialConfig();
txClientViewModel
..handlePushNotification(pushMetaData!, credentialConfig, null)
..observeResponses();
logger.i('actionCallIncoming :: Received Incoming Call! Handle Push');
Expand Down Expand Up @@ -358,7 +358,7 @@ class _MyAppState extends State<MyApp> {
logger.i('OnMessage Time :: Notification Message: ${message.sentTime}');
TelnyxClient.setPushMetaData(message.data);
NotificationService.showNotification(message);
mainViewModel.updateCallFromPush(true);
txClientViewModel.updateCallFromPush(true);
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
logger.i('onMessageOpenedApp :: Notification Message: ${message.data}');
Expand All @@ -379,27 +379,24 @@ class _MyAppState extends State<MyApp> {
logger.d('getPushData : No data');
}
});
} else if (Platform.isIOS && !mainViewModel.callFromPush) {
} else if (Platform.isIOS && !txClientViewModel.callFromPush) {
logger.i('iOS :: connect');
}
} catch (e) {
logger.e('Error: $e');
}
}

// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: mainViewModel),
],
return ChangeNotifierProvider(
create: (context) => txClientViewModel,
child: MaterialApp(
title: 'Telnyx WebRTC',
theme: AppTheme.lightTheme,
initialRoute: '/',
routes: {
'/': (context) => const LoginScreen(),
'/': (context) => const HomesScreen(),
'/home': (context) => const HomeScreen(),
'/call': (context) => const CallScreen(),
},
Expand Down
1 change: 1 addition & 0 deletions lib/utils/asset_paths.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const logo_path = 'assets/images/telnyx_logo.png';
17 changes: 17 additions & 0 deletions lib/utils/dimensions.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const double spacingXXS = 2.0;
const double spacingXS = 4.0;
const double spacingS = 8.0;
const double spacingM = 12.0;
const double spacingL = 16.0;
const double spacingXL = 20.0;
const double spacingXXL = 24.0;
const double spacingXXXL = 28.0;
const double spacingXXXXL = 32.0;
const double spacingXXXXXL = 36.0;

const fontSizeXS = 8.0;
const fontSizeS = 12.0;
const fontSizeM = 16.0;
const fontSizeL = 18.0;
const fontSizeXL = 24.0;
const fontSizeXXL = 32.0;
Loading

0 comments on commit dc26e7b

Please sign in to comment.