Compare commits

..

7 commits
Next ... main

Author SHA1 Message Date
c0be7552d5 Gramatical error 2024-10-17 21:25:58 -04:00
0a6473aa83 Update README.md 2024-10-17 21:25:23 -04:00
c02c314725 Update README.md 2024-10-17 21:25:04 -04:00
695a85b20d Update README.md 2024-10-17 21:23:53 -04:00
558a2e0507 Updated due to issue 2024-10-17 20:57:24 -04:00
7bd329ebef Merge pull request 'Release 0.0.3 Main Merge' (#3) from dev into main
Reviewed-on: #3
We need to work on woodpecker
2024-10-17 18:43:25 -04:00
29a50bb0e7 Merge pull request 'Merge Request 1' (#1) from dev into main
Reviewed-on: #1 on July 15th, 2024 @ 11:52AM Atlantic Standard Time
2024-07-15 11:52:46 -04:00
9 changed files with 228 additions and 406 deletions

View file

@ -1,22 +1,15 @@
when: when:
- event: push - event: push
branch: Next branch: dev
steps: steps:
- name: android build - name: build
image: mobiledevops/flutter-sdk-image image: instrumentisto/flutter
commands: commands:
- git clone https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts.git
- echo "Entering folder"
- cd OpenContacts - cd OpenContacts
- git config --global --add safe.directory /home/mobiledevops/.flutter-sdk - echo "Starting to build..."
- echo "Getting Dependencies" - flutter build --debug
- flutter pub get - name: Deploy
- flutter pub upgrade
- echo "Building..."
- flutter build apk --debug
- echo "Build Completed!"
- name: windows build
image: debian image: debian
commands: commands:
- echo "Build Sucessful!" - echo "Hello World"

View file

@ -1,14 +1,17 @@
<img src="https://raw.githubusercontent.com/Mrdabup/OpenContacts/refs/heads/dev/assets/images/logo512.png" width="200"/> <img src="https://raw.githubusercontent.com/Mrdabup/OpenContacts/refs/heads/dev/assets/images/logo512.png" width="200"/>
## OpenContacts # OpenContacts
A Resonite Contacts App, based on Nutcake's Recon. A Resonite Contacts App, based on Nutcake's Recon.
[Get the latest version of OpenContacts here](https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts) [Get the latest version of OpenContacts here](https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts/releases)
[Available on github too!](https://github.com/Mrdabup/OpenContacts/releases)
[Get ReCon here](https://github.com/Nutcake/ReCon) [Get ReCon here](https://github.com/Nutcake/ReCon)
# Building
## Building
This is a standard Flutter application, refer to the [Flutter docs](https://docs.flutter.dev/get-started/install) on how to build it. This is a standard Flutter application, refer to the [Flutter docs](https://docs.flutter.dev/get-started/install) on how to build it.
@ -17,7 +20,7 @@ Currently only Android is fully supported.
The app works on other platforms, though not every feature will be functional. The app works on other platforms, though not every feature will be functional.
For example, notifications are currently not supported on non-android builds. For example, notifications are currently not supported on non-android builds.
# Screenshots ### Screenshots
TODO: Screenshots! TODO: Screenshots!
<!--<img src="https://github.com/Nutcake/ReCon/assets/10452593/a46ccf8a-0a9f-4518-98e6-84fad2d7bf26" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/5d158f58-cd27-4a68-abf3-9068e92b6a82" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/f2ce95ef-e513-46cb-9654-31e74cdc7c09" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/58ef5e5e-1b53-4a47-92f8-bcbcba7a1e86" width=198/>--> <!--<img src="https://github.com/Nutcake/ReCon/assets/10452593/a46ccf8a-0a9f-4518-98e6-84fad2d7bf26" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/5d158f58-cd27-4a68-abf3-9068e92b6a82" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/f2ce95ef-e513-46cb-9654-31e74cdc7c09" width=198/> <img src="https://github.com/Nutcake/ReCon/assets/10452593/58ef5e5e-1b53-4a47-92f8-bcbcba7a1e86" width=198/>-->

View file

@ -1,3 +0,0 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:

View file

@ -1,4 +1,3 @@
import 'dart:ui';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:OpenContacts/auxiliary.dart'; import 'package:OpenContacts/auxiliary.dart';
import 'package:OpenContacts/clients/session_client.dart'; import 'package:OpenContacts/clients/session_client.dart';
@ -6,15 +5,9 @@ import 'package:OpenContacts/models/session.dart';
import 'package:OpenContacts/widgets/default_error_widget.dart'; import 'package:OpenContacts/widgets/default_error_widget.dart';
import 'package:OpenContacts/widgets/formatted_text.dart'; import 'package:OpenContacts/widgets/formatted_text.dart';
import 'package:OpenContacts/widgets/sessions/session_view.dart'; import 'package:OpenContacts/widgets/sessions/session_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:html/dom.dart' hide Text;
import 'package:indexed/indexed.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gradient_borders/gradient_borders.dart';
class SessionList extends StatefulWidget { class SessionList extends StatefulWidget {
const SessionList({super.key}); const SessionList({super.key});
@ -81,175 +74,45 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
), ),
itemBuilder: (context, index) { itemBuilder: (context, index) {
final session = data[index]; final session = data[index];
return Container( //Make this a container, shit doesn't like it when it's a class already return Card(
decoration: const BoxDecoration( elevation: 0,
gradient: LinearGradient( shape: RoundedRectangleBorder(
begin: Alignment.centerLeft, side: BorderSide(
end: Alignment.centerRight, color: Theme.of(context).colorScheme.outline,
colors: <Color>[ ),
Color.fromARGB(255, 248, 248, 112), borderRadius: BorderRadius.circular(16),
Color.fromARGB(255, 230, 158, 80),
]
), ),
border: GradientBoxBorder(
width: 2,
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.centerRight,
colors: <Color>[
Color.fromARGB(255, 248, 248, 112),
Color.fromARGB(255, 230, 158, 80),
]
)
),
borderRadius: BorderRadius.all( // I wouldn't have known that this was the right way to write
Radius.circular(10)
),
),
child: InkWell( child: InkWell(
onTap: () { onTap: () {
Navigator.of(context) Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => SessionView(session: session))); .push(MaterialPageRoute(builder: (context) => SessionView(session: session)));
}, },
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
child: Indexer( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Indexed( Expanded(
index: 1, flex: 5,
child: Positioned( child: ClipRRect(
top: 0, borderRadius: BorderRadius.circular(16),
bottom: 80, child: Hero(
left: 0, tag: session.id,
right: 0, child: CachedNetworkImage(
child: ClipRRect( imageUrl: Aux.resdbToHttp(session.thumbnailUrl),
borderRadius: const BorderRadius.only( fit: BoxFit.cover,
topLeft: Radius.circular(10), errorWidget: (context, url, error) => const Center(
topRight: Radius.circular(10), child: Icon(
),
child: Hero(
tag: session.id,
child: CachedNetworkImage(
imageUrl: Aux.resdbToHttp(session.thumbnailUrl),
fit: BoxFit.cover,
errorWidget:(context, url, error) => const Center(
child: Icon(
Icons.broken_image, Icons.broken_image,
size: 64, size: 64,
), ),
), ),
placeholder: (context, url) => placeholder: (context, uri) =>
const Center(child: CircularProgressIndicator(), const Center(child: CircularProgressIndicator()),
),
),
), ),
), ),
), ),
), ),
Indexed( Expanded(
index: 2,
child: Positioned(
top: 160,
bottom: 0,
left: 0,
right: 0,
child: Container(
width: 200,
height: 50,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(10),
bottomRight: Radius.circular(10),
),
color: Theme.of(context).colorScheme.onPrimary,
),
),
)
),
Indexed(
index: 3,
child: Positioned(
top: 140,
bottom: 75,
left: 0,
right: 100,
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.onPrimary,
borderRadius: BorderRadius.only(
topRight: Radius.circular(10)
)
),
),
),
),
const Indexed(
index: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 130,
),
Expanded(
child:Icon(
Icons.group
)
),
SizedBox(
height: 15,
),
Expanded(
child: Icon(
Icons.dns
)
)
],
)
), //Due to some limitations, Icons and Texts are on different layers
Indexed(
index: 5,
child: Column(
//mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(
height: 143,
),
Expanded(
child: Text(
" ${(session.sessionUsers.length - (session.headlessHost? 1 : 0)).toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")}",
style: const TextStyle(
fontSize: 20,
)
),
),
Expanded(
child: FormattedText(
//textAlign: Align(1,1),
session.formattedName,
maxLines: 1,
overflow: TextOverflow.ellipsis,
)
),
Expanded(
child: Text(
" ${session.hostUsername}",
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
fontSize: 20,
),
)
)
],
),
)
]
),
/*child: Column(
Expanded( //2
flex: 2, flex: 2,
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 16), padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 16),
@ -292,7 +155,7 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
"${(session.sessionUsers.length - (session.headlessHost? 1 : 0)).toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")} Online", "${session.sessionUsers.length.toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")} Online",
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodySmall?.copyWith( style: Theme.of(context).textTheme.bodySmall?.copyWith(
@ -310,7 +173,7 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
), ),
) )
], ],
),*/ ),
), ),
); );
}, },

View file

@ -31,7 +31,7 @@ class _SessionListAppBarState extends State<SessionListAppBar> {
), ),
); );
}, },
icon: const Icon(Icons.filter_list), icon: const Icon(Icons.filter_alt_outlined),
), ),
) )
], ],

View file

@ -162,7 +162,7 @@ class _SessionViewState extends State<SessionView> {
ListSectionHeader( ListSectionHeader(
leadingText: "Users", leadingText: "Users",
trailingText: trailingText:
"${(session.sessionUsers.length - (session.headlessHost? 1 : 0)).toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")}", //TODO: Find a way to make it so that inactive users do not count "${session.sessionUsers.length.toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")}",
showLine: false, showLine: false,
), ),
], ],

View file

@ -92,7 +92,7 @@ class SettingsPage extends StatelessWidget {
child: Container( child: Container(
margin: const EdgeInsets.all(16), margin: const EdgeInsets.all(16),
constraints: const BoxConstraints(maxWidth: 64), constraints: const BoxConstraints(maxWidth: 64),
child: Image.asset("assets/images/logo512.png"), child: Image.asset("assets/images/testingIcon512.png"),
), ),
), ),
applicationLegalese: "ReCon by Nutcake, OpenContacts by ThatOneJackalGuy. Both apps made with <3", applicationLegalese: "ReCon by Nutcake, OpenContacts by ThatOneJackalGuy. Both apps made with <3",

File diff suppressed because it is too large Load diff

View file

@ -65,8 +65,6 @@ dependencies:
share_plus: ^7.1.0 share_plus: ^7.1.0
ffmpeg_kit_flutter_audio: ^6.0.3 ffmpeg_kit_flutter_audio: ^6.0.3
background_downloader: ^7.12.2 background_downloader: ^7.12.2
indexed: ^0.0.8
gradient_borders: ^1.0.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: