Merge pull request 'Merge Request 1' (#1) from dev into main
Reviewed-on: #1 on July 15th, 2024 @ 11:52AM Atlantic Standard Time
This commit is contained in:
commit
29a50bb0e7
83 changed files with 458 additions and 346 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -43,3 +43,5 @@ app.*.map.json
|
||||||
/android/app/profile
|
/android/app/profile
|
||||||
/android/app/release
|
/android/app/release
|
||||||
/android/key.properties
|
/android/key.properties
|
||||||
|
|
||||||
|
# NEVER STORE ANY KEY OR API KEYS WHEN COMMITING CODE!!
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<img src="https://github.com/Nutcake/ReCon/raw/main/assets/images/logo512.png" width="200"/>
|
<img src="https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts/raw/branch/dev/assets/images/testingIcon512.png" width="200"/>
|
||||||
|
|
||||||
## OpenContacts
|
## OpenContacts
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "me.voidspace.recon"
|
applicationId "de.tojcklguy.opencontacts"
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="de.voidspace.recon">
|
package="de.tojcklguy.opencontacts">
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
the Flutter tool needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="de.voidspace.recon">
|
package="de.tojcklguy.opencontacts">
|
||||||
|
|
||||||
<!-- Required to fetch data from the internet. -->
|
<!-- Required to fetch data from the internet. -->
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
<!-- Optional, you'll have to check this permission by yourself. -->
|
<!-- Optional, you'll have to check this permission by yourself. -->
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<application
|
<application
|
||||||
android:label="ReCon"
|
android:label="OpenContacts"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher">
|
android:icon="@mipmap/ic_launcher">
|
||||||
<activity
|
<activity
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package de.voidspace.recon
|
package de.tojcklguy.opencontacts
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
class MainActivity: FlutterActivity() {
|
||||||
}
|
}
|
|
@ -3,4 +3,4 @@ package me.voidspace.recon
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
class MainActivity: FlutterActivity() {
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="de.voidspace.recon">
|
package="de.tojcklguy.opencontacts">
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
the Flutter tool needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
|
BIN
assets/images/testingIcon512.png
Normal file
BIN
assets/images/testingIcon512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
|
@ -45,7 +45,7 @@
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||||
97C146EE1CF9000F007C117D /* ReCon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReCon.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
97C146EE1CF9000F007C117D /* recon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = recon.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
97C146EF1CF9000F007C117D /* Products */ = {
|
97C146EF1CF9000F007C117D /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
97C146EE1CF9000F007C117D /* ReCon.app */,
|
97C146EE1CF9000F007C117D /* recon.app */,
|
||||||
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
|
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
|
@ -195,7 +195,7 @@
|
||||||
);
|
);
|
||||||
name = Runner;
|
name = Runner;
|
||||||
productName = Runner;
|
productName = Runner;
|
||||||
productReference = 97C146EE1CF9000F007C117D /* ReCon.app */;
|
productReference = 97C146EE1CF9000F007C117D /* recon.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
/* End PBXNativeTarget section */
|
/* End PBXNativeTarget section */
|
||||||
|
@ -446,7 +446,7 @@
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
||||||
|
@ -474,7 +474,7 @@
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
FLUTTER_BUILD_NAME = 0.11.2;
|
FLUTTER_BUILD_NAME = 0.11.2;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -484,7 +484,7 @@
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 0.11.2;
|
MARKETING_VERSION = 0.11.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
@ -592,7 +592,7 @@
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
||||||
|
@ -652,7 +652,7 @@
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
INFOPLIST_KEY_NSDownloadsFolderUsageDescription = "Downloading assets from your inventory";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Recording voice messages";
|
||||||
|
@ -682,7 +682,7 @@
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
FLUTTER_BUILD_NAME = 0.11.2;
|
FLUTTER_BUILD_NAME = 0.11.2;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -692,7 +692,7 @@
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 0.11.2;
|
MARKETING_VERSION = 0.11.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
@ -712,7 +712,7 @@
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
FLUTTER_BUILD_NAME = 0.11.2;
|
FLUTTER_BUILD_NAME = 0.11.2;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -722,7 +722,7 @@
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 0.11.2;
|
MARKETING_VERSION = 0.11.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
</AnalyzeAction>
|
</AnalyzeAction>
|
||||||
<ArchiveAction
|
<ArchiveAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
customArchiveName = "ReCon"
|
customArchiveName = "recon"
|
||||||
revealArchiveInOrganizer = "YES">
|
revealArchiveInOrganizer = "YES">
|
||||||
</ArchiveAction>
|
</ArchiveAction>
|
||||||
</Scheme>
|
</Scheme>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>ReCon</string>
|
<string>recon</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>ReCon</string>
|
<string>recon</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/cloud_variable.dart';
|
import 'package:OpenContacts/models/cloud_variable.dart';
|
||||||
|
|
||||||
class CloudVariableApi {
|
class CloudVariableApi {
|
||||||
static Future<CloudVariable> readCloudVariable(ApiClient client,
|
static Future<CloudVariable> readCloudVariable(ApiClient client,
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/models/users/friend_status.dart';
|
import 'package:OpenContacts/models/users/friend_status.dart';
|
||||||
import 'package:recon/models/users/user.dart';
|
import 'package:OpenContacts/models/users/user.dart';
|
||||||
import 'package:recon/models/users/user_profile.dart';
|
import 'package:OpenContacts/models/users/user_profile.dart';
|
||||||
import 'package:recon/models/users/user_status.dart';
|
import 'package:OpenContacts/models/users/user_status.dart';
|
||||||
|
|
||||||
class ContactApi {
|
class ContactApi {
|
||||||
static Future<List<Friend>> getFriendsList(ApiClient client, {DateTime? lastStatusUpdate}) async {
|
static Future<List<Friend>> getFriendsList(ApiClient client, {DateTime? lastStatusUpdate}) async {
|
||||||
|
|
|
@ -3,10 +3,10 @@ import 'dart:convert';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
class GithubApi {
|
class GithubApi {
|
||||||
static const baseUrl = "https://api.github.com";
|
static const baseUrl = "https://git.mrdab.vore.media/api/v1";
|
||||||
|
|
||||||
static Future<String> getLatestTagName() async {
|
static Future<String> getLatestTagName() async {
|
||||||
final response = await http.get(Uri.parse("$baseUrl/repos/Nutcake/ReCon/releases?per_page=1"));
|
final response = await http.get(Uri.parse("$baseUrl/repos/ThatOneJackalGuy/OpenContacts/releases?per_page=1"));
|
||||||
if (response.statusCode != 200) return "";
|
if (response.statusCode != 200) return "";
|
||||||
final body = jsonDecode(response.body) as List;
|
final body = jsonDecode(response.body) as List;
|
||||||
if (body.isEmpty) return "";
|
if (body.isEmpty) return "";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
|
|
||||||
class MessageApi {
|
class MessageApi {
|
||||||
static Future<List<Message>> getUserMessages(ApiClient client, {String userId = "", DateTime? fromTime,
|
static Future<List<Message>> getUserMessages(ApiClient client, {String userId = "", DateTime? fromTime,
|
||||||
|
|
|
@ -3,16 +3,16 @@ import 'dart:io';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:recon/models/records/asset_digest.dart';
|
import 'package:OpenContacts/models/records/asset_digest.dart';
|
||||||
import 'package:recon/models/records/json_template.dart';
|
import 'package:OpenContacts/models/records/json_template.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/records/asset_upload_data.dart';
|
import 'package:OpenContacts/models/records/asset_upload_data.dart';
|
||||||
import 'package:recon/models/records/resonite_db_asset.dart';
|
import 'package:OpenContacts/models/records/resonite_db_asset.dart';
|
||||||
import 'package:recon/models/records/preprocess_status.dart';
|
import 'package:OpenContacts/models/records/preprocess_status.dart';
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
import 'package:http_parser/http_parser.dart';
|
import 'package:http_parser/http_parser.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
|
|
||||||
class SessionApi {
|
class SessionApi {
|
||||||
static Future<Session> getSession(ApiClient client, {required String sessionId}) async {
|
static Future<Session> getSession(ApiClient client, {required String sessionId}) async {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/personal_profile.dart';
|
import 'package:OpenContacts/models/personal_profile.dart';
|
||||||
import 'package:recon/models/users/user.dart';
|
import 'package:OpenContacts/models/users/user.dart';
|
||||||
import 'package:recon/models/users/user_status.dart';
|
import 'package:OpenContacts/models/users/user_status.dart';
|
||||||
|
|
||||||
class UserApi {
|
class UserApi {
|
||||||
static Future<Iterable<User>> searchUsers(ApiClient client, {required String needle}) async {
|
static Future<Iterable<User>> searchUsers(ApiClient client, {required String needle}) async {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/config.dart';
|
import 'package:OpenContacts/config.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:html/parser.dart' as htmlparser;
|
import 'package:html/parser.dart' as htmlparser;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/clients/notification_client.dart';
|
import 'package:OpenContacts/clients/notification_client.dart';
|
||||||
import 'package:recon/clients/settings_client.dart';
|
import 'package:OpenContacts/clients/settings_client.dart';
|
||||||
import 'package:recon/models/authentication_data.dart';
|
import 'package:OpenContacts/models/authentication_data.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class ClientHolder extends InheritedWidget {
|
class ClientHolder extends InheritedWidget {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import 'dart:convert';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:recon/models/authentication_data.dart';
|
import 'package:OpenContacts/models/authentication_data.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@ import 'package:ffmpeg_kit_flutter_audio/ffmpeg_kit.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
|
|
||||||
class AudioCacheClient {
|
class AudioCacheClient {
|
||||||
final Future<Directory> _directoryFuture = getTemporaryDirectory();
|
final Future<Directory> _directoryFuture = getTemporaryDirectory();
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:recon/apis/record_api.dart';
|
import 'package:OpenContacts/apis/record_api.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/inventory/resonite_directory.dart';
|
import 'package:OpenContacts/models/inventory/resonite_directory.dart';
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
|
|
||||||
enum SortMode {
|
enum SortMode {
|
||||||
name,
|
name,
|
||||||
|
|
|
@ -5,21 +5,21 @@ import 'package:flutter/widgets.dart';
|
||||||
import 'package:hive_flutter/hive_flutter.dart';
|
import 'package:hive_flutter/hive_flutter.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
import 'package:recon/apis/contact_api.dart';
|
import 'package:OpenContacts/apis/contact_api.dart';
|
||||||
import 'package:recon/apis/message_api.dart';
|
import 'package:OpenContacts/apis/message_api.dart';
|
||||||
import 'package:recon/apis/session_api.dart';
|
import 'package:OpenContacts/apis/session_api.dart';
|
||||||
import 'package:recon/apis/user_api.dart';
|
import 'package:OpenContacts/apis/user_api.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/clients/notification_client.dart';
|
import 'package:OpenContacts/clients/notification_client.dart';
|
||||||
import 'package:recon/clients/settings_client.dart';
|
import 'package:OpenContacts/clients/settings_client.dart';
|
||||||
import 'package:recon/crypto_helper.dart';
|
import 'package:OpenContacts/crypto_helper.dart';
|
||||||
import 'package:recon/hub_manager.dart';
|
import 'package:OpenContacts/hub_manager.dart';
|
||||||
import 'package:recon/models/hub_events.dart';
|
import 'package:OpenContacts/models/hub_events.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:recon/models/users/user_status.dart';
|
import 'package:OpenContacts/models/users/user_status.dart';
|
||||||
|
|
||||||
class MessagingClient extends ChangeNotifier {
|
class MessagingClient extends ChangeNotifier {
|
||||||
static const Duration _autoRefreshDuration = Duration(seconds: 10);
|
static const Duration _autoRefreshDuration = Duration(seconds: 10);
|
||||||
|
@ -228,17 +228,19 @@ class MessagingClient extends ChangeNotifier {
|
||||||
// Adjusting values to ensure correct placement of 'headless'
|
// Adjusting values to ensure correct placement of 'headless'
|
||||||
if (friend.isHeadless) return 2.5;
|
if (friend.isHeadless) return 2.5;
|
||||||
switch (friend.userStatus.onlineStatus) {
|
switch (friend.userStatus.onlineStatus) {
|
||||||
case OnlineStatus.online:
|
case OnlineStatus.sociable:
|
||||||
return 0;
|
return 0;
|
||||||
case OnlineStatus.away:
|
case OnlineStatus.online:
|
||||||
return 1;
|
return 1;
|
||||||
case OnlineStatus.busy:
|
case OnlineStatus.away:
|
||||||
return 2;
|
return 2;
|
||||||
|
case OnlineStatus.busy:
|
||||||
|
return 3;
|
||||||
case OnlineStatus.invisible:
|
case OnlineStatus.invisible:
|
||||||
return 2.5;
|
return 3.5;
|
||||||
case OnlineStatus.offline:
|
case OnlineStatus.offline:
|
||||||
default:
|
default:
|
||||||
return 3;
|
return 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ import 'dart:convert';
|
||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart' as fln;
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart' as fln;
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
|
|
||||||
class NotificationChannel {
|
class NotificationChannel {
|
||||||
final String id;
|
final String id;
|
||||||
|
@ -26,7 +26,7 @@ class NotificationClient {
|
||||||
android: fln.AndroidInitializationSettings("ic_notification"),
|
android: fln.AndroidInitializationSettings("ic_notification"),
|
||||||
iOS: fln.DarwinInitializationSettings(),
|
iOS: fln.DarwinInitializationSettings(),
|
||||||
macOS: fln.DarwinInitializationSettings(),
|
macOS: fln.DarwinInitializationSettings(),
|
||||||
linux: fln.LinuxInitializationSettings(defaultActionName: "Open ReCon"),
|
linux: fln.LinuxInitializationSettings(defaultActionName: "Open OpenContacts"),
|
||||||
));
|
));
|
||||||
|
|
||||||
Future<void> showUnreadMessagesNotification(Iterable<Message> messages) async {
|
Future<void> showUnreadMessagesNotification(Iterable<Message> messages) async {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:recon/apis/session_api.dart';
|
import 'package:OpenContacts/apis/session_api.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/clients/settings_client.dart';
|
import 'package:OpenContacts/clients/settings_client.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
class SessionClient extends ChangeNotifier {
|
class SessionClient extends ChangeNotifier {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/models/settings.dart';
|
import 'package:OpenContacts/models/settings.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ import 'dart:io';
|
||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:recon/config.dart';
|
import 'package:OpenContacts/config.dart';
|
||||||
import 'package:recon/models/hub_events.dart';
|
import 'package:OpenContacts/models/hub_events.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
|
|
|
@ -13,17 +13,17 @@ import 'package:intl/intl.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/apis/github_api.dart';
|
import 'package:OpenContacts/apis/github_api.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/clients/inventory_client.dart';
|
import 'package:OpenContacts/clients/inventory_client.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/clients/session_client.dart';
|
import 'package:OpenContacts/clients/session_client.dart';
|
||||||
import 'package:recon/clients/settings_client.dart';
|
import 'package:OpenContacts/clients/settings_client.dart';
|
||||||
import 'package:recon/models/sem_ver.dart';
|
import 'package:OpenContacts/models/sem_ver.dart';
|
||||||
import 'package:recon/widgets/homepage.dart';
|
import 'package:OpenContacts/widgets/homepage.dart';
|
||||||
import 'package:recon/widgets/login_screen.dart';
|
import 'package:OpenContacts/widgets/login_screen.dart';
|
||||||
import 'package:recon/widgets/update_notifier.dart';
|
import 'package:OpenContacts/widgets/update_notifier.dart';
|
||||||
|
|
||||||
import 'models/authentication_data.dart';
|
import 'models/authentication_data.dart';
|
||||||
|
|
||||||
|
@ -59,20 +59,20 @@ void main() async {
|
||||||
// Ignore
|
// Ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
runApp(ReCon(settingsClient: settingsClient, cachedAuthentication: cachedAuth));
|
runApp(recon(settingsClient: settingsClient, cachedAuthentication: cachedAuth));
|
||||||
}
|
}
|
||||||
|
|
||||||
class ReCon extends StatefulWidget {
|
class recon extends StatefulWidget {
|
||||||
const ReCon({required this.settingsClient, required this.cachedAuthentication, super.key});
|
const recon({required this.settingsClient, required this.cachedAuthentication, super.key});
|
||||||
|
|
||||||
final SettingsClient settingsClient;
|
final SettingsClient settingsClient;
|
||||||
final AuthenticationData cachedAuthentication;
|
final AuthenticationData cachedAuthentication;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<ReCon> createState() => _ReConState();
|
State<recon> createState() => _reconState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ReConState extends State<ReCon> {
|
class _reconState extends State<recon> {
|
||||||
final Typography _typography = Typography.material2021(platform: defaultTargetPlatform);
|
final Typography _typography = Typography.material2021(platform: defaultTargetPlatform);
|
||||||
final ReceivePort _port = ReceivePort();
|
final ReceivePort _port = ReceivePort();
|
||||||
late AuthenticationData _authData = widget.cachedAuthentication;
|
late AuthenticationData _authData = widget.cachedAuthentication;
|
||||||
|
@ -165,7 +165,7 @@ class _ReConState extends State<ReCon> {
|
||||||
child: DynamicColorBuilder(
|
child: DynamicColorBuilder(
|
||||||
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) => MaterialApp(
|
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) => MaterialApp(
|
||||||
debugShowCheckedModeBanner: true,
|
debugShowCheckedModeBanner: true,
|
||||||
title: 'ReCon',
|
title: 'OpenContacts',
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
textTheme: _typography.black,
|
textTheme: _typography.black,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
|
|
||||||
class CloudVariable {
|
class CloudVariable {
|
||||||
final String ownerId;
|
final String ownerId;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
|
|
||||||
class ResoniteDirectory {
|
class ResoniteDirectory {
|
||||||
static const rootName = "Inventory";
|
static const rootName = "Inventory";
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/apis/message_api.dart';
|
import 'package:OpenContacts/apis/message_api.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/string_formatter.dart';
|
import 'package:OpenContacts/string_formatter.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
enum MessageType {
|
enum MessageType {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/users/entitlement.dart';
|
import 'package:OpenContacts/models/users/entitlement.dart';
|
||||||
import 'package:recon/models/users/user_profile.dart';
|
import 'package:OpenContacts/models/users/user_profile.dart';
|
||||||
|
|
||||||
class PersonalProfile {
|
class PersonalProfile {
|
||||||
final String id;
|
final String id;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
import 'package:recon/models/records/resonite_db_asset.dart';
|
import 'package:OpenContacts/models/records/resonite_db_asset.dart';
|
||||||
|
|
||||||
class AssetDiff extends ResoniteDBAsset{
|
class AssetDiff extends ResoniteDBAsset{
|
||||||
final Diff state;
|
final Diff state;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:recon/models/records/resonite_db_asset.dart';
|
import 'package:OpenContacts/models/records/resonite_db_asset.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
|
|
||||||
class AssetDigest {
|
class AssetDigest {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/models/records/asset_diff.dart';
|
import 'package:OpenContacts/models/records/asset_diff.dart';
|
||||||
|
|
||||||
enum RecordPreprocessState
|
enum RecordPreprocessState
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/records/asset_digest.dart';
|
import 'package:OpenContacts/models/records/asset_digest.dart';
|
||||||
import 'package:recon/models/records/resonite_db_asset.dart';
|
import 'package:OpenContacts/models/records/resonite_db_asset.dart';
|
||||||
import 'package:recon/string_formatter.dart';
|
import 'package:OpenContacts/string_formatter.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/string_formatter.dart';
|
import 'package:OpenContacts/string_formatter.dart';
|
||||||
|
|
||||||
class Session {
|
class Session {
|
||||||
final String id;
|
final String id;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
class SessionMetadata {
|
class SessionMetadata {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/models/sem_ver.dart';
|
import 'package:OpenContacts/models/sem_ver.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
|
|
||||||
class Entitlement {
|
class Entitlement {
|
||||||
Entitlement();
|
Entitlement();
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/users/friend_status.dart';
|
import 'package:OpenContacts/models/users/friend_status.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:recon/models/users/user_profile.dart';
|
import 'package:OpenContacts/models/users/user_profile.dart';
|
||||||
import 'package:recon/models/users/user_status.dart';
|
import 'package:OpenContacts/models/users/user_status.dart';
|
||||||
|
|
||||||
class Friend implements Comparable {
|
class Friend implements Comparable {
|
||||||
static const _emptyId = "-1";
|
static const _emptyId = "-1";
|
||||||
|
|
|
@ -5,14 +5,16 @@ enum OnlineStatus {
|
||||||
invisible,
|
invisible,
|
||||||
away,
|
away,
|
||||||
busy,
|
busy,
|
||||||
online;
|
online,
|
||||||
|
sociable;
|
||||||
|
|
||||||
static final List<Color> _colors = [
|
static final List<Color> _colors = [
|
||||||
Colors.transparent,
|
Colors.transparent,
|
||||||
Colors.transparent,
|
Colors.grey,
|
||||||
Colors.yellow,
|
Colors.yellow,
|
||||||
Colors.red,
|
Colors.red,
|
||||||
Colors.green,
|
Colors.green,
|
||||||
|
Colors.blue,
|
||||||
];
|
];
|
||||||
|
|
||||||
Color color(BuildContext context) => this == OnlineStatus.offline || this == OnlineStatus.invisible
|
Color color(BuildContext context) => this == OnlineStatus.offline || this == OnlineStatus.invisible
|
||||||
|
@ -28,6 +30,8 @@ enum OnlineStatus {
|
||||||
|
|
||||||
int compareTo(OnlineStatus other) {
|
int compareTo(OnlineStatus other) {
|
||||||
if (this == other) return 0;
|
if (this == other) return 0;
|
||||||
|
if (this == OnlineStatus.sociable) return -1;
|
||||||
|
if (other == OnlineStatus.sociable) return 1;
|
||||||
if (this == OnlineStatus.online) return -1;
|
if (this == OnlineStatus.online) return -1;
|
||||||
if (other == OnlineStatus.online) return 1;
|
if (other == OnlineStatus.online) return 1;
|
||||||
if (this == OnlineStatus.away) return -1;
|
if (this == OnlineStatus.away) return -1;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/models/users/user_profile.dart';
|
import 'package:OpenContacts/models/users/user_profile.dart';
|
||||||
|
|
||||||
class User {
|
class User {
|
||||||
final String id;
|
final String id;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:recon/config.dart';
|
import 'package:OpenContacts/config.dart';
|
||||||
import 'package:recon/crypto_helper.dart';
|
import 'package:OpenContacts/crypto_helper.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/models/session_metadata.dart';
|
import 'package:OpenContacts/models/session_metadata.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
enum UserSessionType
|
enum UserSessionType
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/string_formatter.dart';
|
import 'package:OpenContacts/string_formatter.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class FormattedText extends StatelessWidget {
|
class FormattedText extends StatelessWidget {
|
||||||
|
|
|
@ -66,7 +66,7 @@ class _ExpandingInputFabState extends State<ExpandingInputFab> {
|
||||||
},
|
},
|
||||||
splashRadius: 16,
|
splashRadius: 16,
|
||||||
iconSize: 28,
|
iconSize: 28,
|
||||||
icon: _isExtended ? const Icon(Icons.close) : const Icon(Icons.search),
|
icon: _isExtended ? const Icon(Icons.close) : const Icon(Icons.person_search),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/friends/friend_online_status_indicator.dart';
|
import 'package:OpenContacts/widgets/friends/friend_online_status_indicator.dart';
|
||||||
import 'package:recon/widgets/generic_avatar.dart';
|
import 'package:OpenContacts/widgets/generic_avatar.dart';
|
||||||
import 'package:recon/widgets/messages/messages_list.dart';
|
import 'package:OpenContacts/widgets/messages/messages_list.dart';
|
||||||
|
|
||||||
class FriendListTile extends StatelessWidget {
|
class FriendListTile extends StatelessWidget {
|
||||||
const FriendListTile({required this.friend, required this.unreads, this.onTap, super.key});
|
const FriendListTile({required this.friend, required this.unreads, this.onTap, super.key});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:recon/models/users/user_status.dart';
|
import 'package:OpenContacts/models/users/user_status.dart';
|
||||||
|
|
||||||
class FriendOnlineStatusIndicator extends StatelessWidget {
|
class FriendOnlineStatusIndicator extends StatelessWidget {
|
||||||
const FriendOnlineStatusIndicator({required this.friend, super.key});
|
const FriendOnlineStatusIndicator({required this.friend, super.key});
|
||||||
|
@ -12,7 +12,7 @@ class FriendOnlineStatusIndicator extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final UserStatus userStatus = friend.userStatus;
|
final UserStatus userStatus = friend.userStatus;
|
||||||
final OnlineStatus onlineStatus = userStatus.onlineStatus;
|
final OnlineStatus onlineStatus = userStatus.onlineStatus;
|
||||||
return userStatus.appVersion.contains("ReCon") && friend.isOnline
|
return userStatus.appVersion.contains("recon") && friend.isOnline
|
||||||
? SizedBox.square(
|
? SizedBox.square(
|
||||||
dimension: 10,
|
dimension: 10,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/friends/expanding_input_fab.dart';
|
import 'package:OpenContacts/widgets/friends/expanding_input_fab.dart';
|
||||||
import 'package:recon/widgets/friends/friend_list_tile.dart';
|
import 'package:OpenContacts/widgets/friends/friend_list_tile.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/models/users/online_status.dart';
|
import 'package:OpenContacts/models/users/online_status.dart';
|
||||||
import 'package:recon/widgets/friends/user_search.dart';
|
import 'package:OpenContacts/widgets/friends/user_search.dart';
|
||||||
import 'package:recon/widgets/my_profile_dialog.dart';
|
import 'package:OpenContacts/widgets/my_profile_dialog.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -21,7 +21,7 @@ class _FriendsListAppBarState extends State<FriendsListAppBar> with AutomaticKee
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
super.build(context);
|
super.build(context);
|
||||||
return AppBar(
|
return AppBar(
|
||||||
title: const Text("ReCon"),
|
title: const Text("OpenContacts"),
|
||||||
actions: [
|
actions: [
|
||||||
Consumer<MessagingClient>(builder: (context, client, _) {
|
Consumer<MessagingClient>(builder: (context, client, _) {
|
||||||
return PopupMenuButton<OnlineStatus>(
|
return PopupMenuButton<OnlineStatus>(
|
||||||
|
@ -53,7 +53,7 @@ class _FriendsListAppBarState extends State<FriendsListAppBar> with AutomaticKee
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
itemBuilder: (BuildContext context) => OnlineStatus.values
|
itemBuilder: (BuildContext context) => OnlineStatus.values
|
||||||
.where((element) => element == OnlineStatus.online || element == OnlineStatus.offline).sorted((a, b) => b.index.compareTo(a.index),)
|
.where((element) => element == OnlineStatus.sociable || element == OnlineStatus.online ||element == OnlineStatus.busy || element == OnlineStatus.offline).sorted((a, b) => b.index.compareTo(a.index),)
|
||||||
.map(
|
.map(
|
||||||
(item) => PopupMenuItem<OnlineStatus>(
|
(item) => PopupMenuItem<OnlineStatus>(
|
||||||
value: item,
|
value: item,
|
||||||
|
@ -85,7 +85,7 @@ class _FriendsListAppBarState extends State<FriendsListAppBar> with AutomaticKee
|
||||||
},
|
},
|
||||||
itemBuilder: (BuildContext context) => [
|
itemBuilder: (BuildContext context) => [
|
||||||
MenuItemDefinition(
|
MenuItemDefinition(
|
||||||
name: "Find Users",
|
name: "Add Users",
|
||||||
icon: Icons.person_add,
|
icon: Icons.person_add,
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
final mClient = Provider.of<MessagingClient>(context, listen: false);
|
final mClient = Provider.of<MessagingClient>(context, listen: false);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:recon/apis/contact_api.dart';
|
import 'package:OpenContacts/apis/contact_api.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/users/user.dart';
|
import 'package:OpenContacts/models/users/user.dart';
|
||||||
import 'package:recon/widgets/generic_avatar.dart';
|
import 'package:OpenContacts/widgets/generic_avatar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:recon/apis/user_api.dart';
|
import 'package:OpenContacts/apis/user_api.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/models/users/user.dart';
|
import 'package:OpenContacts/models/users/user.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/friends/user_list_tile.dart';
|
import 'package:OpenContacts/widgets/friends/user_list_tile.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class _UserSearchState extends State<UserSearch> {
|
||||||
final mClient = Provider.of<MessagingClient>(context, listen: false);
|
final mClient = Provider.of<MessagingClient>(context, listen: false);
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text("Find Users"),
|
title: const Text("Add Users"),
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: false,
|
top: false,
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:recon/widgets/friends/friends_list.dart';
|
import 'package:OpenContacts/widgets/friends/friends_list.dart';
|
||||||
import 'package:recon/widgets/friends/friends_list_app_bar.dart';
|
import 'package:OpenContacts/widgets/friends/friends_list_app_bar.dart';
|
||||||
import 'package:recon/widgets/inventory/inventory_browser.dart';
|
import 'package:OpenContacts/widgets/inventory/inventory_browser.dart';
|
||||||
import 'package:recon/widgets/inventory/inventory_browser_app_bar.dart';
|
import 'package:OpenContacts/widgets/inventory/inventory_browser_app_bar.dart';
|
||||||
import 'package:recon/widgets/sessions/session_list.dart';
|
import 'package:OpenContacts/widgets/sessions/session_list.dart';
|
||||||
import 'package:recon/widgets/sessions/session_list_app_bar.dart';
|
import 'package:OpenContacts/widgets/sessions/session_list_app_bar.dart';
|
||||||
import 'package:recon/widgets/settings_app_bar.dart';
|
import 'package:OpenContacts/widgets/settings_app_bar.dart';
|
||||||
import 'package:recon/widgets/settings_page.dart';
|
import 'package:OpenContacts/widgets/settings_page.dart';
|
||||||
|
|
||||||
class Home extends StatefulWidget {
|
class Home extends StatefulWidget {
|
||||||
const Home({super.key});
|
const Home({super.key});
|
||||||
|
@ -17,8 +17,8 @@ class Home extends StatefulWidget {
|
||||||
|
|
||||||
class _HomeState extends State<Home> {
|
class _HomeState extends State<Home> {
|
||||||
static const List<Widget> _appBars = [
|
static const List<Widget> _appBars = [
|
||||||
FriendsListAppBar(),
|
|
||||||
SessionListAppBar(),
|
SessionListAppBar(),
|
||||||
|
FriendsListAppBar(),
|
||||||
InventoryBrowserAppBar(),
|
InventoryBrowserAppBar(),
|
||||||
SettingsAppBar()
|
SettingsAppBar()
|
||||||
];
|
];
|
||||||
|
@ -41,8 +41,8 @@ class _HomeState extends State<Home> {
|
||||||
controller: _pageController,
|
controller: _pageController,
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
children: const [
|
children: const [
|
||||||
FriendsList(),
|
|
||||||
SessionList(),
|
SessionList(),
|
||||||
|
FriendsList(),
|
||||||
InventoryBrowser(),
|
InventoryBrowser(),
|
||||||
SettingsPage(),
|
SettingsPage(),
|
||||||
],
|
],
|
||||||
|
@ -60,14 +60,14 @@ class _HomeState extends State<Home> {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
destinations: const [
|
destinations: const [
|
||||||
NavigationDestination(
|
|
||||||
icon: Icon(Icons.message),
|
|
||||||
label: "Chat",
|
|
||||||
),
|
|
||||||
NavigationDestination(
|
NavigationDestination(
|
||||||
icon: Icon(Icons.public),
|
icon: Icon(Icons.public),
|
||||||
label: "Sessions",
|
label: "Sessions",
|
||||||
),
|
),
|
||||||
|
NavigationDestination(
|
||||||
|
icon: Icon(Icons.message),
|
||||||
|
label: "Chat",
|
||||||
|
),
|
||||||
NavigationDestination(
|
NavigationDestination(
|
||||||
icon: Icon(Icons.inventory),
|
icon: Icon(Icons.inventory),
|
||||||
label: "Inventory",
|
label: "Inventory",
|
||||||
|
|
|
@ -5,13 +5,13 @@ import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:photo_view/photo_view.dart';
|
import 'package:photo_view/photo_view.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/inventory_client.dart';
|
import 'package:OpenContacts/clients/inventory_client.dart';
|
||||||
import 'package:recon/models/inventory/resonite_directory.dart';
|
import 'package:OpenContacts/models/inventory/resonite_directory.dart';
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/inventory/object_inventory_tile.dart';
|
import 'package:OpenContacts/widgets/inventory/object_inventory_tile.dart';
|
||||||
import 'package:recon/widgets/inventory/path_inventory_tile.dart';
|
import 'package:OpenContacts/widgets/inventory/path_inventory_tile.dart';
|
||||||
|
|
||||||
class InventoryBrowser extends StatefulWidget {
|
class InventoryBrowser extends StatefulWidget {
|
||||||
const InventoryBrowser({super.key});
|
const InventoryBrowser({super.key});
|
||||||
|
|
|
@ -9,8 +9,8 @@ import 'package:intl/intl.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/inventory_client.dart';
|
import 'package:OpenContacts/clients/inventory_client.dart';
|
||||||
import 'package:share_plus/share_plus.dart';
|
import 'package:share_plus/share_plus.dart';
|
||||||
|
|
||||||
class InventoryBrowserAppBar extends StatefulWidget {
|
class InventoryBrowserAppBar extends StatefulWidget {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:recon/models/records/record.dart';
|
import 'package:OpenContacts/models/records/record.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class PathInventoryTile extends StatelessWidget {
|
class PathInventoryTile extends StatelessWidget {
|
||||||
|
|
|
@ -3,9 +3,9 @@ import 'dart:io';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/models/authentication_data.dart';
|
import 'package:OpenContacts/models/authentication_data.dart';
|
||||||
|
|
||||||
class LoginScreen extends StatefulWidget {
|
class LoginScreen extends StatefulWidget {
|
||||||
const LoginScreen({this.onLoginSuccessful, this.cachedUsername, super.key});
|
const LoginScreen({this.onLoginSuccessful, this.cachedUsername, super.key});
|
||||||
|
@ -27,6 +27,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||||
late final FocusNode _totpFocusNode;
|
late final FocusNode _totpFocusNode;
|
||||||
|
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
|
bool _isEmailResetSend = false;
|
||||||
String _error = "";
|
String _error = "";
|
||||||
bool _needsTotp = false;
|
bool _needsTotp = false;
|
||||||
|
|
||||||
|
@ -46,9 +47,16 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||||
_totpFocusNode.dispose();
|
_totpFocusNode.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
RegExp emailReg = RegExp(
|
||||||
|
r"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$",
|
||||||
|
|
||||||
|
caseSensitive: false,
|
||||||
|
multiLine: false,
|
||||||
|
|
||||||
|
);
|
||||||
Future<void> submit() async {
|
Future<void> submit() async {
|
||||||
if (_usernameController.text.isEmpty || _passwordController.text.isEmpty) {
|
|
||||||
|
if (_usernameController.text.isEmpty || _passwordController.text.isEmpty) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_error = "Please enter a valid username/password combination.";
|
_error = "Please enter a valid username/password combination.";
|
||||||
});
|
});
|
||||||
|
@ -103,7 +111,69 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Future<void> passwordResetSubmit() async {
|
||||||
|
if (_usernameController.text.isEmpty) {
|
||||||
|
setState(() {
|
||||||
|
_error = "Please provide an email on the 'Username' textbox";
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_usernameController.text.contains(emailReg)) {
|
||||||
|
setState(() {
|
||||||
|
_error = "An email to reset your password has been requested to resonite.";
|
||||||
|
_isEmailResetSend = true;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setState(() {
|
||||||
|
_error = "";
|
||||||
|
_isEmailResetSend = true;
|
||||||
|
});
|
||||||
|
/*try {
|
||||||
|
final authData = await ApiClient.tryLogin(
|
||||||
|
username: _usernameController.text,
|
||||||
|
password: _passwordController.text,
|
||||||
|
oneTimePad: _totpController.text.isEmpty ? null : _totpController.text,
|
||||||
|
);
|
||||||
|
if (!authData.isAuthenticated) {
|
||||||
|
setState(() {
|
||||||
|
_error = "Login unsuccessful: Server sent invalid response.";
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setState(() {
|
||||||
|
_error = "";
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
await loginSuccessful(authData);
|
||||||
|
} catch (e, s) {
|
||||||
|
setState(() {
|
||||||
|
if (e == ApiClient.totpKey) {
|
||||||
|
if (_needsTotp == false) {
|
||||||
|
_error = "Please enter your 2FA-Code";
|
||||||
|
_totpFocusNode.requestFocus();
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||||||
|
_scrollController.animateTo(_scrollController.position.maxScrollExtent,
|
||||||
|
duration: const Duration(milliseconds: 400), curve: Curves.easeOutCirc);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
_error = "The given 2FA code is not valid.";
|
||||||
|
}
|
||||||
|
_needsTotp = true;
|
||||||
|
} else {
|
||||||
|
_error = "Login unsuccessful: $e.";
|
||||||
|
}
|
||||||
|
if (kDebugMode) {
|
||||||
|
FlutterError.reportError(FlutterErrorDetails(
|
||||||
|
exception: e,
|
||||||
|
stack: s,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
}*/
|
||||||
|
}
|
||||||
Future<void> loginSuccessful(AuthenticationData authData) async {
|
Future<void> loginSuccessful(AuthenticationData authData) async {
|
||||||
final settingsClient = ClientHolder.of(context).settingsClient;
|
final settingsClient = ClientHolder.of(context).settingsClient;
|
||||||
final notificationManager = FlutterLocalNotificationsPlugin();
|
final notificationManager = FlutterLocalNotificationsPlugin();
|
||||||
|
@ -160,7 +230,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text("ReCon"),
|
title: const Text("OpenContacts"),
|
||||||
),
|
),
|
||||||
body: Builder(builder: (context) {
|
body: Builder(builder: (context) {
|
||||||
return ListView(
|
return ListView(
|
||||||
|
@ -227,6 +297,16 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||||
label: const Text("Login"),
|
label: const Text("Login"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
/*Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 16),
|
||||||
|
child: _isEmailResetSend
|
||||||
|
? const Center(child: CircularProgressIndicator())
|
||||||
|
: TextButton.icon(
|
||||||
|
onPressed: passwordResetSubmit,
|
||||||
|
icon: const Icon(Icons.refresh),
|
||||||
|
label: const Text("Forgot Password?"),
|
||||||
|
),
|
||||||
|
),*/ // I have to look into this feature and understand how password resseting works
|
||||||
Center(
|
Center(
|
||||||
child: AnimatedOpacity(
|
child: AnimatedOpacity(
|
||||||
opacity: _errorOpacity,
|
opacity: _errorOpacity,
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/photo_asset.dart';
|
import 'package:OpenContacts/models/photo_asset.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/string_formatter.dart';
|
import 'package:OpenContacts/string_formatter.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/messages/message_state_indicator.dart';
|
import 'package:OpenContacts/widgets/messages/message_state_indicator.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:photo_view/photo_view.dart';
|
import 'package:photo_view/photo_view.dart';
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,10 @@ import 'dart:convert';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:just_audio/just_audio.dart';
|
import 'package:just_audio/just_audio.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/audio_cache_client.dart';
|
import 'package:OpenContacts/clients/audio_cache_client.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/widgets/messages/message_state_indicator.dart';
|
import 'package:OpenContacts/widgets/messages/message_state_indicator.dart';
|
||||||
|
|
||||||
class MessageAudioPlayer extends StatefulWidget {
|
class MessageAudioPlayer extends StatefulWidget {
|
||||||
const MessageAudioPlayer({required this.message, this.foregroundColor, super.key});
|
const MessageAudioPlayer({required this.message, this.foregroundColor, super.key});
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/widgets/messages/message_asset.dart';
|
import 'package:OpenContacts/widgets/messages/message_asset.dart';
|
||||||
import 'package:recon/widgets/messages/message_audio_player.dart';
|
import 'package:OpenContacts/widgets/messages/message_audio_player.dart';
|
||||||
import 'package:recon/widgets/messages/message_session_invite.dart';
|
import 'package:OpenContacts/widgets/messages/message_session_invite.dart';
|
||||||
import 'package:recon/widgets/messages/message_text.dart';
|
import 'package:OpenContacts/widgets/messages/message_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class MessageBubble extends StatelessWidget {
|
class MessageBubble extends StatelessWidget {
|
||||||
|
|
|
@ -7,14 +7,14 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/apis/record_api.dart';
|
import 'package:OpenContacts/apis/record_api.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/api_client.dart';
|
import 'package:OpenContacts/clients/api_client.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/widgets/messages/message_attachment_list.dart';
|
import 'package:OpenContacts/widgets/messages/message_attachment_list.dart';
|
||||||
import 'package:record/record.dart';
|
import 'package:record/record.dart';
|
||||||
|
|
||||||
class MessageInputBar extends StatefulWidget {
|
class MessageInputBar extends StatefulWidget {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/generic_avatar.dart';
|
import 'package:OpenContacts/widgets/generic_avatar.dart';
|
||||||
import 'package:recon/widgets/messages/message_state_indicator.dart';
|
import 'package:OpenContacts/widgets/messages/message_state_indicator.dart';
|
||||||
import 'package:recon/widgets/sessions/session_view.dart';
|
import 'package:OpenContacts/widgets/sessions/session_view.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class MessageSessionInvite extends StatelessWidget {
|
class MessageSessionInvite extends StatelessWidget {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:recon/models/message.dart';
|
import 'package:OpenContacts/models/message.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/messages/message_state_indicator.dart';
|
import 'package:OpenContacts/widgets/messages/message_state_indicator.dart';
|
||||||
|
|
||||||
class MessageText extends StatelessWidget {
|
class MessageText extends StatelessWidget {
|
||||||
const MessageText({required this.message, this.foregroundColor, super.key});
|
const MessageText({required this.message, this.foregroundColor, super.key});
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/clients/audio_cache_client.dart';
|
import 'package:OpenContacts/clients/audio_cache_client.dart';
|
||||||
import 'package:recon/clients/messaging_client.dart';
|
import 'package:OpenContacts/clients/messaging_client.dart';
|
||||||
import 'package:recon/models/users/friend.dart';
|
import 'package:OpenContacts/models/users/friend.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/friends/friend_online_status_indicator.dart';
|
import 'package:OpenContacts/widgets/friends/friend_online_status_indicator.dart';
|
||||||
import 'package:recon/widgets/messages/message_input_bar.dart';
|
import 'package:OpenContacts/widgets/messages/message_input_bar.dart';
|
||||||
import 'package:recon/widgets/messages/messages_session_header.dart';
|
import 'package:OpenContacts/widgets/messages/messages_session_header.dart';
|
||||||
|
|
||||||
import 'message_bubble.dart';
|
import 'message_bubble.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/generic_avatar.dart';
|
import 'package:OpenContacts/widgets/generic_avatar.dart';
|
||||||
import 'package:recon/widgets/sessions/session_view.dart';
|
import 'package:OpenContacts/widgets/sessions/session_view.dart';
|
||||||
|
|
||||||
class SessionTile extends StatelessWidget {
|
class SessionTile extends StatelessWidget {
|
||||||
const SessionTile({required this.session, super.key});
|
const SessionTile({required this.session, super.key});
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:recon/apis/user_api.dart';
|
import 'package:OpenContacts/apis/user_api.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/personal_profile.dart';
|
import 'package:OpenContacts/models/personal_profile.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/generic_avatar.dart';
|
import 'package:OpenContacts/widgets/generic_avatar.dart';
|
||||||
|
|
||||||
class MyProfileDialog extends StatefulWidget {
|
class MyProfileDialog extends StatefulWidget {
|
||||||
const MyProfileDialog({super.key});
|
const MyProfileDialog({super.key});
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/clients/session_client.dart';
|
import 'package:OpenContacts/clients/session_client.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/clients/session_client.dart';
|
import 'package:OpenContacts/clients/session_client.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/widgets/default_error_widget.dart';
|
import 'package:OpenContacts/widgets/default_error_widget.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/sessions/session_view.dart';
|
import 'package:OpenContacts/widgets/sessions/session_view.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:recon/clients/session_client.dart';
|
import 'package:OpenContacts/clients/session_client.dart';
|
||||||
import 'package:recon/widgets/sessions/session_filter_dialog.dart';
|
import 'package:OpenContacts/widgets/sessions/session_filter_dialog.dart';
|
||||||
|
|
||||||
class SessionListAppBar extends StatefulWidget {
|
class SessionListAppBar extends StatefulWidget {
|
||||||
const SessionListAppBar({super.key});
|
const SessionListAppBar({super.key});
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:recon/apis/session_api.dart';
|
import 'package:OpenContacts/apis/session_api.dart';
|
||||||
import 'package:recon/auxiliary.dart';
|
import 'package:OpenContacts/auxiliary.dart';
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/session.dart';
|
import 'package:OpenContacts/models/session.dart';
|
||||||
import 'package:recon/widgets/formatted_text.dart';
|
import 'package:OpenContacts/widgets/formatted_text.dart';
|
||||||
import 'package:recon/widgets/panorama.dart';
|
import 'package:OpenContacts/widgets/panorama.dart';
|
||||||
import 'package:recon/widgets/settings_page.dart';
|
import 'package:OpenContacts/widgets/settings_page.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class SessionView extends StatefulWidget {
|
class SessionView extends StatefulWidget {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_phoenix/flutter_phoenix.dart';
|
import 'package:flutter_phoenix/flutter_phoenix.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
@ -74,14 +74,14 @@ class SettingsPage extends StatelessWidget {
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
trailing: const Icon(Icons.info_outline),
|
trailing: const Icon(Icons.info_outline),
|
||||||
title: const Text("About ReCon"),
|
title: const Text("About OpenContacts"),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
showAboutDialog(
|
showAboutDialog(
|
||||||
context: context,
|
context: context,
|
||||||
applicationVersion: (await PackageInfo.fromPlatform()).version,
|
applicationVersion: (await PackageInfo.fromPlatform()).version,
|
||||||
applicationIcon: InkWell(
|
applicationIcon: InkWell(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
if (!await launchUrl(Uri.parse("https://github.com/Nutcake/ReCon"),
|
if (!await launchUrl(Uri.parse("https://git.mrdab.vore.media/ThatOneJackalGuy/OpenContacts"),
|
||||||
mode: LaunchMode.externalApplication)) {
|
mode: LaunchMode.externalApplication)) {
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
ScaffoldMessenger.of(context)
|
ScaffoldMessenger.of(context)
|
||||||
|
@ -92,10 +92,10 @@ 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: "Created by Nutcake with love <3",
|
applicationLegalese: "ReCon by Nutcake, OpenContacts by ThatOneJackalGuy. Both apps made with <3",
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:recon/client_holder.dart';
|
import 'package:OpenContacts/client_holder.dart';
|
||||||
import 'package:recon/models/sem_ver.dart';
|
import 'package:OpenContacts/models/sem_ver.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class UpdateNotifier extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
TextButton.icon(
|
TextButton.icon(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
launchUrl(Uri.parse("https://github.com/Nutcake/ReCon/releases/latest"),
|
launchUrl(Uri.parse("https://github.com/Nutcake/recon/releases/latest"),
|
||||||
mode: LaunchMode.externalApplication,
|
mode: LaunchMode.externalApplication,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -54,7 +54,7 @@ class UpdateNotifier extends StatelessWidget {
|
||||||
.secondary
|
.secondary
|
||||||
),
|
),
|
||||||
icon: const Icon(Icons.download),
|
icon: const Icon(Icons.download),
|
||||||
label: const Text("Get it on Github"),
|
label: const Text("Get it on Forgejo"),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -7,7 +7,7 @@ project(runner LANGUAGES CXX)
|
||||||
set(BINARY_NAME "recon")
|
set(BINARY_NAME "recon")
|
||||||
# The unique GTK application identifier for this application. See:
|
# The unique GTK application identifier for this application. See:
|
||||||
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
|
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
|
||||||
set(APPLICATION_ID "de.voidspace.recon")
|
set(APPLICATION_ID "de.tojcklguy.opencontacts")
|
||||||
|
|
||||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||||
# versions of CMake.
|
# versions of CMake.
|
||||||
|
|
|
@ -40,11 +40,11 @@ static void my_application_activate(GApplication* application) {
|
||||||
if (use_header_bar) {
|
if (use_header_bar) {
|
||||||
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
|
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
|
||||||
gtk_widget_show(GTK_WIDGET(header_bar));
|
gtk_widget_show(GTK_WIDGET(header_bar));
|
||||||
gtk_header_bar_set_title(header_bar, "ReCon");
|
gtk_header_bar_set_title(header_bar, "recon");
|
||||||
gtk_header_bar_set_show_close_button(header_bar, TRUE);
|
gtk_header_bar_set_show_close_button(header_bar, TRUE);
|
||||||
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
|
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
|
||||||
} else {
|
} else {
|
||||||
gtk_window_set_title(window, "ReCon");
|
gtk_window_set_title(window, "recon");
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_window_set_default_size(window, 480, 900);
|
gtk_window_set_default_size(window, 480, 900);
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
||||||
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
||||||
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
||||||
33CC10ED2044A3C60003C045 /* ReCon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReCon.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
33CC10ED2044A3C60003C045 /* recon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = recon.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
||||||
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
33CC10EE2044A3C60003C045 /* Products */ = {
|
33CC10EE2044A3C60003C045 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
33CC10ED2044A3C60003C045 /* ReCon.app */,
|
33CC10ED2044A3C60003C045 /* recon.app */,
|
||||||
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
|
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
|
@ -238,7 +238,7 @@
|
||||||
);
|
);
|
||||||
name = Runner;
|
name = Runner;
|
||||||
productName = Runner;
|
productName = Runner;
|
||||||
productReference = 33CC10ED2044A3C60003C045 /* ReCon.app */;
|
productReference = 33CC10ED2044A3C60003C045 /* recon.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
/* End PBXNativeTarget section */
|
/* End PBXNativeTarget section */
|
||||||
|
@ -570,7 +570,7 @@
|
||||||
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
||||||
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -578,7 +578,7 @@
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = "0.11.1-beta";
|
MARKETING_VERSION = "0.11.1-beta";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
};
|
};
|
||||||
|
@ -710,7 +710,7 @@
|
||||||
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
||||||
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -718,7 +718,7 @@
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = "0.11.1-beta";
|
MARKETING_VERSION = "0.11.1-beta";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
@ -741,7 +741,7 @@
|
||||||
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
DEVELOPMENT_TEAM = P9AV4LPNLL;
|
||||||
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
FLUTTER_BUILD_NAME = "0.11.1-beta";
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = ReCon;
|
INFOPLIST_KEY_CFBundleDisplayName = recon;
|
||||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -749,7 +749,7 @@
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = "0.11.1-beta";
|
MARKETING_VERSION = "0.11.1-beta";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
PRODUCT_BUNDLE_IDENTIFIER = ch.isota.recon;
|
||||||
PRODUCT_NAME = ReCon;
|
PRODUCT_NAME = recon;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "ReCon.app"
|
BuildableName = "recon.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
68
pubspec.lock
68
pubspec.lock
|
@ -125,10 +125,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.2"
|
version: "1.18.0"
|
||||||
color:
|
color:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -528,6 +528,30 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.8"
|
version: "0.4.8"
|
||||||
|
leak_tracker:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker
|
||||||
|
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "10.0.4"
|
||||||
|
leak_tracker_flutter_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_flutter_testing
|
||||||
|
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.3"
|
||||||
|
leak_tracker_testing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: leak_tracker_testing
|
||||||
|
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -548,26 +572,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.16"
|
version: "0.12.16+1"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.12.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -612,10 +636,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.3"
|
version: "1.9.0"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -873,18 +897,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.11.1"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.2"
|
||||||
stream_transform:
|
stream_transform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -921,10 +945,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0"
|
version: "0.7.0"
|
||||||
timezone:
|
timezone:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1021,14 +1045,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
web:
|
vm_service:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web
|
name: vm_service
|
||||||
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.4-beta"
|
version: "14.2.1"
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1070,5 +1094,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.0"
|
version: "6.3.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.1.0 <4.0.0"
|
dart: ">=3.3.0 <4.0.0"
|
||||||
flutter: ">=3.13.0"
|
flutter: ">=3.18.0-18.0.pre.54"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name: recon
|
name: OpenContacts
|
||||||
description: A Resonite Contacts App for Android
|
description: A Resonite Contacts App for Android
|
||||||
# The following line prevents the package from being accidentally published to
|
# The following line prevents the package from being accidentally published to
|
||||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||||
|
@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 0.11.3-beta+1
|
version: 0.0.1-alpha+2
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.1"
|
sdk: ">=3.0.1"
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:recon/clients/settings_client.dart';
|
import 'package:OpenContacts/clients/settings_client.dart';
|
||||||
import 'package:recon/main.dart';
|
import 'package:OpenContacts/main.dart';
|
||||||
import 'package:recon/models/authentication_data.dart';
|
import 'package:OpenContacts/models/authentication_data.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(ReCon(
|
await tester.pumpWidget(recon(
|
||||||
settingsClient: SettingsClient(),
|
settingsClient: SettingsClient(),
|
||||||
cachedAuthentication: AuthenticationData.unauthenticated(),
|
cachedAuthentication: AuthenticationData.unauthenticated(),
|
||||||
));
|
));
|
||||||
|
|
Loading…
Reference in a new issue