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
1 change: 1 addition & 0 deletions android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ android {
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
ndkVersion = "27.0.12077973"
versionCode = flutter.versionCode
versionName = flutter.versionName
}
Expand Down
11 changes: 11 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<application
android:label="whitenoise"
android:name="${applicationName}"
Expand Down
Binary file added assets/pngs/group_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
232 changes: 232 additions & 0 deletions lib/domain/dummy_data/dummy_messages.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
// list of messages
import 'package:whitenoise/domain/models/contact_model.dart';

import '../models/message_model.dart';

MessageModel originalMessage1=MessageModel(
id: '100',
message: 'I am also fine',
timeSent: '10:05 AM',
reactions: ['👍', '❤️', '😂'],
isMe: true,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asdfasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"
);

MessageModel originalMessage2=MessageModel(
id: '101',
message: 'Good to hear that',
timeSent: '10:05 AM',
reactions: ['👍'],
isMe: false,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asdfasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"
);

List<MessageModel> messages = [
MessageModel(
id: '12',
message: '',
timeSent: '10:04 AM',
reactions: ['👍'],
isMe: false,
messageType: 0,
isReplyMessage: false,
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"
),
MessageModel(
id: '11',
message: '',
timeSent: '10:05 AM',
reactions: ['👍', '❤️', '😂'],
isMe: true,
messageType: 0,
isReplyMessage: false,
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"
),

MessageModel(
id: '10',
message: 'Goodbye',
timeSent: '10:09 AM',
reactions: [
'👍',
],
isMe: true,
messageType: 0,
isReplyMessage: false,
),
MessageModel(
id: '9',
message: 'Bye',
timeSent: '10:08 AM',
reactions: ['👍', '💗', '😂'],
isMe: false,
messageType: 0,
isReplyMessage: false,
),
MessageModel(
id: '8',
message: 'Yes',
timeSent: '10:07 AM',
reactions: ['❤️'],
isMe: true,
messageType: 1,
isReplyMessage: false,
audioPath: "https://commondatastorage.googleapis.com/codeskulptor-assets/Collision8-Bit.ogg"
),
MessageModel(
id: '7',
message: 'Good to hear that',
timeSent: '10:06 AM',
reactions: ['👍'],
isMe: false,
messageType: 1,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
audioPath: "https://rpg.hamsterrepublic.com/wiki-images/f/f1/BigBossDeath.ogg",
),
MessageModel(
id: '6',
message: 'I am also fine',
timeSent: '10:05 AM',
reactions: ['👍', '❤️', '😂'],
isMe: true,
messageType: 0,
isReplyMessage: true,
originalMessage: originalMessage2,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asdfasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"
),
MessageModel(
id: '5',
message: 'What about you?',
timeSent: '10:04 AM',
reactions: ['👍'],
isMe: false,
messageType: 0,
isReplyMessage: true,
originalMessage: originalMessage1,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"
),
MessageModel(
id: '4',
message: 'I am fine, thank you',
timeSent: '10:03 AM',
reactions: [],
isMe: true,
messageType: 0,
isReplyMessage: false,
),
MessageModel(
id: '3',
message: 'How are you?',
timeSent: '10:02 AM',
reactions: [],
isMe: false,
messageType: 0,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
isReplyMessage: false,
),
MessageModel(
id: '2',
message: 'Hi',
timeSent: '10:01 AM',
reactions: ['😂'],
isMe: true,
messageType: 0,
isReplyMessage: false,
),
MessageModel(
id: '1',
message: 'Hello',
timeSent: '10:00 AM',
reactions: ['😍'],
isMe: false,
messageType: 0,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
isReplyMessage: false,
),
];

List<MessageModel> groupMessages = [
MessageModel(
id: '10',
message: 'Goodbye',
timeSent: '10:09 AM',
reactions: [
'👍',
],
isMe: true,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Me", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
),
MessageModel(
id: '9',
message: 'Bye',
timeSent: '10:08 AM',
reactions: ['👍', '💗', '😂'],
isMe: false,
messageType: 0,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
isReplyMessage: false,
),
MessageModel(
id: '8',
message: 'Yes',
timeSent: '10:07 AM',
reactions: [],
isMe: false,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
),
MessageModel(
id: '7',
message: 'Good to hear that',
timeSent: '10:06 AM',
reactions: ['👍'],
isMe: false,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),

),
MessageModel(
id: '6',
message: 'I am also fine',
timeSent: '10:05 AM',
reactions: ['👍', '❤️', '😂','👍','👍'],
isMe: false,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Max Hillebrand", email: "max@email.com", publicKey: "asdfasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"),
imageUrl: "https://civilogs.com/uploads/jobs/513/Site_photo_1_11_15_39.png"
),
MessageModel(
id: '2',
message: 'Yooo. nice to be here',
timeSent: '10:04 AM',
reactions: ['👍'],
isMe: false,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Marek", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
),
MessageModel(
id: '1',
message: 'Hey all. welcome to new group',
timeSent: '10:00 AM',
reactions: ['😍'],
isMe: true,
messageType: 0,
isReplyMessage: false,
senderData: ContactModel(name: "Me", email: "marek@email.com", publicKey: "asd fasdfasdfa", imagePath: "https://civilogs.com/uploads/jobs/513/Site_photo_3_11_15_39.png"),
),
];
36 changes: 36 additions & 0 deletions lib/domain/models/message_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import 'package:whitenoise/domain/models/contact_model.dart';

class MessageModel {
final int messageType; //0: text message, 1: audio message,
final String id;
final String timeSent;
final List<String> reactions;
final bool isMe;
final bool isReplyMessage;
// bool isShowUserAvatar;
// bool isShowUserName;
String? message;
String? imageUrl;
String? audioPath;
MessageModel? originalMessage;
ContactModel? senderData;


MessageModel({
required this.messageType,
required this.id,
required this.timeSent,
required this.reactions,
required this.isMe,
required this.isReplyMessage,
// this.isShowUserAvatar=false,
// this.isShowUserName = false,
this.message,
this.imageUrl,
this.audioPath,
this.originalMessage,
this.senderData
});


}
22 changes: 14 additions & 8 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:whitenoise/ui/auth_flow/welcome_screen.dart';
import 'package:whitenoise/src/rust/frb_generated.dart';
import 'package:whitenoise/routing/router.dart';
import 'package:flutter/services.dart';
import 'package:whitenoise/ui/core/themes/colors.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await RustLib.init();
runApp(const MyApp());
//await RustLib.init();
runApp(ProviderScope(child: const MyApp()));
}

class MyApp extends StatelessWidget {
Expand All @@ -27,11 +28,16 @@ class MyApp extends StatelessWidget {
minTextAdapt: true,
splitScreenMode: true,
builder: (context, child) {
return MaterialApp(
return MaterialApp.router(
title: 'White Noise',
theme: ThemeData.light(),
debugShowCheckedModeBanner: false,
home: const WelcomeScreen(),
theme: ThemeData(
fontFamily: 'OverusedGrotesk',
appBarTheme: AppBarTheme(
backgroundColor: AppColors.color202320, // Default AppBar color for the app
),
),
routerConfig: router,
);
},
);
Expand Down
34 changes: 34 additions & 0 deletions lib/routing/router.dart
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
// Build the GoRouter here
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:whitenoise/routing/routes.dart';
import 'package:whitenoise/ui/chat/groupchat_screen.dart';

import '../ui/auth_flow/welcome_page.dart';
import '../ui/chat/chat_screen.dart';

/// The route configuration.
final GoRouter router = GoRouter(
routes: <RouteBase>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return const WelcomeScreen();
},
routes: <RouteBase>[
GoRoute(
path: Routes.chats,
builder: (BuildContext context, GoRouterState state) {
//final id = state.pathParameters["id"]!; // Get "id" param from URL
return ChatScreen();
},
),
GoRoute(
path: Routes.newChat,
builder: (BuildContext context, GoRouterState state) {
return const GroupchatScreen();
},
),
],
),
],
);
1 change: 0 additions & 1 deletion lib/routing/routes.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
abstract final class Routes {
static const home = '/';

// Auth
static const login = '/login';

Expand Down
Loading