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:
- event: push
branch: Next
branch: dev
steps:
- name: android build
image: mobiledevops/flutter-sdk-image
- name: build
image: instrumentisto/flutter
commands:
- git clone https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts.git
- echo "Entering folder"
- cd OpenContacts
- git config --global --add safe.directory /home/mobiledevops/.flutter-sdk
- echo "Getting Dependencies"
- flutter pub get
- flutter pub upgrade
- echo "Building..."
- flutter build apk --debug
- echo "Build Completed!"
- name: windows build
- echo "Starting to build..."
- flutter build --debug
- name: Deploy
image: debian
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"/>
## OpenContacts
# OpenContacts
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)
# 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.
@ -17,7 +20,7 @@ Currently only Android is fully supported.
The app works on other platforms, though not every feature will be functional.
For example, notifications are currently not supported on non-android builds.
# Screenshots
### 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/>-->

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:OpenContacts/auxiliary.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/formatted_text.dart';
import 'package:OpenContacts/widgets/sessions/session_view.dart';
import 'package:flutter/cupertino.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:flutter/services.dart';
import 'package:gradient_borders/gradient_borders.dart';
class SessionList extends StatefulWidget {
const SessionList({super.key});
@ -81,30 +74,13 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
),
itemBuilder: (context, index) {
final session = data[index];
return Container( //Make this a container, shit doesn't like it when it's a class already
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.centerRight,
colors: <Color>[
Color.fromARGB(255, 248, 248, 112),
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)
return Card(
elevation: 0,
shape: RoundedRectangleBorder(
side: BorderSide(
color: Theme.of(context).colorScheme.outline,
),
borderRadius: BorderRadius.circular(16),
),
child: InkWell(
onTap: () {
@ -112,144 +88,31 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
.push(MaterialPageRoute(builder: (context) => SessionView(session: session)));
},
borderRadius: BorderRadius.circular(16),
child: Indexer(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Indexed(
index: 1,
child: Positioned(
top: 0,
bottom: 80,
left: 0,
right: 0,
Expanded(
flex: 5,
child: ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(10),
topRight: Radius.circular(10),
),
borderRadius: BorderRadius.circular(16),
child: Hero(
tag: session.id,
child: CachedNetworkImage(
imageUrl: Aux.resdbToHttp(session.thumbnailUrl),
fit: BoxFit.cover,
errorWidget:(context, url, error) => const Center(
errorWidget: (context, url, error) => const Center(
child: Icon(
Icons.broken_image,
size: 64,
),
),
placeholder: (context, url) =>
const Center(child: CircularProgressIndicator(),
placeholder: (context, uri) =>
const Center(child: CircularProgressIndicator()),
),
),
),
),
),
),
Indexed(
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,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 16),
@ -292,7 +155,7 @@ class _SessionListState extends State<SessionList> with AutomaticKeepAliveClient
children: [
Expanded(
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,
overflow: TextOverflow.ellipsis,
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(
leadingText: "Users",
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,
),
],

View file

@ -92,7 +92,7 @@ class SettingsPage extends StatelessWidget {
child: Container(
margin: const EdgeInsets.all(16),
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",

File diff suppressed because it is too large Load diff

View file

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