mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 10:58:40 +00:00
fixing uuid issue in tables
This commit is contained in:
parent
8b48db26f4
commit
18dd85d937
19 changed files with 173 additions and 124 deletions
|
|
@ -386,14 +386,14 @@ SPEC CHECKSUMS:
|
||||||
GoogleAppMeasurement: 1e718274b7e015cefd846ac1fcf7820c70dc017d
|
GoogleAppMeasurement: 1e718274b7e015cefd846ac1fcf7820c70dc017d
|
||||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||||
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
||||||
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326
|
||||||
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
||||||
local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb
|
local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb
|
||||||
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||||
no_screenshot: 6d183496405a3ab709a67a54e5cd0f639e94729e
|
no_screenshot: 6d183496405a3ab709a67a54e5cd0f639e94729e
|
||||||
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
||||||
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
|
path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880
|
||||||
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
|
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
restart_app: 9cda5378aacc5000e3f66ee76a9201534e7d3ecf
|
restart_app: 9cda5378aacc5000e3f66ee76a9201534e7d3ecf
|
||||||
|
|
@ -401,14 +401,14 @@ SPEC CHECKSUMS:
|
||||||
SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a
|
SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a
|
||||||
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
||||||
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
|
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
|
||||||
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
|
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
|
||||||
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
|
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
|
||||||
sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
|
sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
|
||||||
sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
|
sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
|
||||||
SwiftProtobuf: 81e341191afbddd64aa031bd12862dccfab2f639
|
SwiftProtobuf: 81e341191afbddd64aa031bd12862dccfab2f639
|
||||||
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
|
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
|
||||||
video_compress: f2133a07762889d67f0711ac831faa26f956980e
|
video_compress: f2133a07762889d67f0711ac831faa26f956980e
|
||||||
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
|
video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a
|
||||||
video_thumbnail: b637e0ad5f588ca9945f6e2c927f73a69a661140
|
video_thumbnail: b637e0ad5f588ca9945f6e2c927f73a69a661140
|
||||||
|
|
||||||
PODFILE CHECKSUM: 47470fbd5b59affa461eaf943ac57acce81e0ee8
|
PODFILE CHECKSUM: 47470fbd5b59affa461eaf943ac57acce81e0ee8
|
||||||
|
|
|
||||||
68
lib/app.dart
68
lib/app.dart
|
|
@ -1,6 +1,9 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
|
import 'package:path/path.dart' show join;
|
||||||
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/localization/generated/app_localizations.dart';
|
import 'package:twonly/src/localization/generated/app_localizations.dart';
|
||||||
|
|
@ -11,6 +14,7 @@ import 'package:twonly/src/views/components/app_outdated.dart';
|
||||||
import 'package:twonly/src/views/home.view.dart';
|
import 'package:twonly/src/views/home.view.dart';
|
||||||
import 'package:twonly/src/views/onboarding/onboarding.view.dart';
|
import 'package:twonly/src/views/onboarding/onboarding.view.dart';
|
||||||
import 'package:twonly/src/views/onboarding/register.view.dart';
|
import 'package:twonly/src/views/onboarding/register.view.dart';
|
||||||
|
import 'package:twonly/src/views/updates/62_database_migration.view.dart';
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
const App({super.key});
|
const App({super.key});
|
||||||
|
|
@ -144,36 +148,60 @@ class AppMainWidget extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AppMainWidgetState extends State<AppMainWidget> {
|
class _AppMainWidgetState extends State<AppMainWidget> {
|
||||||
Future<bool> userCreated = isUserCreated();
|
bool _isUserCreated = false;
|
||||||
bool showOnboarding = true;
|
bool _showDatabaseMigration = false;
|
||||||
|
bool _showOnboarding = true;
|
||||||
|
bool _isLoaded = false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
initAsync();
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> initAsync() async {
|
||||||
|
_showDatabaseMigration = File(
|
||||||
|
join(
|
||||||
|
(await getApplicationSupportDirectory()).path,
|
||||||
|
'twonly_database.sqlite',
|
||||||
|
),
|
||||||
|
).existsSync();
|
||||||
|
|
||||||
|
_isUserCreated = await isUserCreated();
|
||||||
|
setState(() {
|
||||||
|
_isLoaded = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(
|
if (!_isLoaded) {
|
||||||
children: [
|
|
||||||
FutureBuilder<bool>(
|
|
||||||
future: userCreated,
|
|
||||||
builder: (context, snapshot) {
|
|
||||||
if (!snapshot.hasData) {
|
|
||||||
return Center(child: Container());
|
return Center(child: Container());
|
||||||
} else if (snapshot.data!) {
|
}
|
||||||
return HomeView(
|
|
||||||
|
late Widget child;
|
||||||
|
|
||||||
|
if (_showDatabaseMigration) {
|
||||||
|
child = const DatabaseMigrationView();
|
||||||
|
} else if (_isUserCreated) {
|
||||||
|
child = HomeView(
|
||||||
initialPage: widget.initialPage,
|
initialPage: widget.initialPage,
|
||||||
);
|
);
|
||||||
} else if (showOnboarding) {
|
} else if (_showOnboarding) {
|
||||||
return OnboardingView(
|
child = OnboardingView(
|
||||||
callbackOnSuccess: () => setState(() {
|
callbackOnSuccess: () => setState(() {
|
||||||
showOnboarding = false;
|
_showOnboarding = false;
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
child = RegisterView(
|
||||||
|
callbackOnSuccess: initAsync,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return RegisterView(
|
|
||||||
callbackOnSuccess: () => setState(() {
|
return Stack(
|
||||||
userCreated = isUserCreated();
|
children: [
|
||||||
}),
|
child,
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
const AppOutdated(),
|
const AppOutdated(),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:camera/camera.dart';
|
import 'package:camera/camera.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
@ -12,7 +10,6 @@ import 'package:twonly/src/providers/settings.provider.dart';
|
||||||
import 'package:twonly/src/services/api.service.dart';
|
import 'package:twonly/src/services/api.service.dart';
|
||||||
import 'package:twonly/src/services/api/mediafiles/media_background.service.dart';
|
import 'package:twonly/src/services/api/mediafiles/media_background.service.dart';
|
||||||
import 'package:twonly/src/services/fcm.service.dart';
|
import 'package:twonly/src/services/fcm.service.dart';
|
||||||
import 'package:twonly/src/services/notifications/setup.notifications.dart';
|
|
||||||
import 'package:twonly/src/utils/log.dart';
|
import 'package:twonly/src/utils/log.dart';
|
||||||
import 'package:twonly/src/utils/storage.dart';
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
|
|
||||||
|
|
@ -27,9 +24,6 @@ void main() async {
|
||||||
final user = await getUser();
|
final user = await getUser();
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
gUser = user;
|
gUser = user;
|
||||||
if (user.isDemoUser) {
|
|
||||||
await deleteLocalUserData();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final settingsController = SettingsChangeProvider();
|
final settingsController = SettingsChangeProvider();
|
||||||
|
|
@ -37,7 +31,7 @@ void main() async {
|
||||||
await settingsController.loadSettings();
|
await settingsController.loadSettings();
|
||||||
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
|
|
||||||
unawaited(setupPushNotification());
|
// unawaited(setupPushNotification());
|
||||||
|
|
||||||
gCameras = await availableCameras();
|
gCameras = await availableCameras();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
|
import 'package:hashlib/random.dart';
|
||||||
import 'package:twonly/src/database/tables/groups.table.dart';
|
import 'package:twonly/src/database/tables/groups.table.dart';
|
||||||
import 'package:twonly/src/database/twonly.db.dart';
|
import 'package:twonly/src/database/twonly.db.dart';
|
||||||
|
|
||||||
|
|
@ -33,7 +34,11 @@ class GroupsDao extends DatabaseAccessor<TwonlyDB> with _$GroupsDaoMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> insertGroup(GroupsCompanion group) async {
|
Future<void> insertGroup(GroupsCompanion group) async {
|
||||||
await into(groups).insert(group);
|
await into(groups).insert(
|
||||||
|
group.copyWith(
|
||||||
|
groupId: Value(uuid.v4()),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<Contact>> getGroupContact(String groupId) async {
|
Future<List<Contact>> getGroupContact(String groupId) async {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
|
import 'package:hashlib/random.dart';
|
||||||
import 'package:twonly/src/database/tables/mediafiles.table.dart';
|
import 'package:twonly/src/database/tables/mediafiles.table.dart';
|
||||||
import 'package:twonly/src/database/twonly.db.dart';
|
import 'package:twonly/src/database/twonly.db.dart';
|
||||||
import 'package:twonly/src/utils/log.dart';
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
@ -15,7 +16,11 @@ class MediaFilesDao extends DatabaseAccessor<TwonlyDB>
|
||||||
|
|
||||||
Future<MediaFile?> insertMedia(MediaFilesCompanion mediaFile) async {
|
Future<MediaFile?> insertMedia(MediaFilesCompanion mediaFile) async {
|
||||||
try {
|
try {
|
||||||
final rowId = await into(mediaFiles).insert(mediaFile);
|
final rowId = await into(mediaFiles).insert(
|
||||||
|
mediaFile.copyWith(
|
||||||
|
mediaId: Value(uuid.v7()),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
return await (select(mediaFiles)..where((t) => t.rowId.equals(rowId)))
|
return await (select(mediaFiles)..where((t) => t.rowId.equals(rowId)))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
|
import 'package:hashlib/random.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/tables/contacts.table.dart';
|
import 'package:twonly/src/database/tables/contacts.table.dart';
|
||||||
import 'package:twonly/src/database/tables/groups.table.dart';
|
import 'package:twonly/src/database/tables/groups.table.dart';
|
||||||
|
|
@ -290,7 +291,11 @@ class MessagesDao extends DatabaseAccessor<TwonlyDB> with _$MessagesDaoMixin {
|
||||||
|
|
||||||
Future<Message?> insertMessage(MessagesCompanion message) async {
|
Future<Message?> insertMessage(MessagesCompanion message) async {
|
||||||
try {
|
try {
|
||||||
final rowId = await into(messages).insert(message);
|
final rowId = await into(messages).insert(
|
||||||
|
message.copyWith(
|
||||||
|
messageId: Value(uuid.v7()),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
await twonlyDB.groupsDao.updateGroup(
|
await twonlyDB.groupsDao.updateGroup(
|
||||||
message.groupId.value,
|
message.groupId.value,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
|
import 'package:hashlib/random.dart';
|
||||||
import 'package:twonly/src/database/tables/messages.table.dart';
|
import 'package:twonly/src/database/tables/messages.table.dart';
|
||||||
import 'package:twonly/src/database/tables/receipts.table.dart';
|
import 'package:twonly/src/database/tables/receipts.table.dart';
|
||||||
import 'package:twonly/src/database/twonly.db.dart';
|
import 'package:twonly/src/database/twonly.db.dart';
|
||||||
|
|
@ -51,7 +52,11 @@ class ReceiptsDao extends DatabaseAccessor<TwonlyDB> with _$ReceiptsDaoMixin {
|
||||||
|
|
||||||
Future<Receipt?> insertReceipt(ReceiptsCompanion entry) async {
|
Future<Receipt?> insertReceipt(ReceiptsCompanion entry) async {
|
||||||
try {
|
try {
|
||||||
final id = await into(receipts).insert(entry);
|
final id = await into(receipts).insert(
|
||||||
|
entry.copyWith(
|
||||||
|
receiptId: Value(uuid.v4()),
|
||||||
|
),
|
||||||
|
);
|
||||||
return await (select(receipts)..where((t) => t.rowId.equals(id)))
|
return await (select(receipts)..where((t) => t.rowId.equals(id)))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hashlib/random.dart';
|
|
||||||
import 'package:twonly/src/database/tables/contacts.table.dart';
|
import 'package:twonly/src/database/tables/contacts.table.dart';
|
||||||
|
|
||||||
@DataClassName('Group')
|
@DataClassName('Group')
|
||||||
class Groups extends Table {
|
class Groups extends Table {
|
||||||
TextColumn get groupId => text().clientDefault(() => uuid.v4())();
|
TextColumn get groupId => text()();
|
||||||
|
|
||||||
BoolColumn get isGroupAdmin => boolean()();
|
BoolColumn get isGroupAdmin => boolean()();
|
||||||
BoolColumn get isDirectChat => boolean()();
|
BoolColumn get isDirectChat => boolean()();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hashlib/random.dart';
|
|
||||||
|
|
||||||
enum MediaType {
|
enum MediaType {
|
||||||
image,
|
image,
|
||||||
|
|
@ -36,7 +34,7 @@ enum DownloadState {
|
||||||
|
|
||||||
@DataClassName('MediaFile')
|
@DataClassName('MediaFile')
|
||||||
class MediaFiles extends Table {
|
class MediaFiles extends Table {
|
||||||
TextColumn get mediaId => text().clientDefault(() => uuid.v7())();
|
TextColumn get mediaId => text()();
|
||||||
|
|
||||||
TextColumn get type => textEnum<MediaType>()();
|
TextColumn get type => textEnum<MediaType>()();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hashlib/random.dart';
|
|
||||||
import 'package:twonly/src/database/tables/contacts.table.dart';
|
import 'package:twonly/src/database/tables/contacts.table.dart';
|
||||||
import 'package:twonly/src/database/tables/groups.table.dart';
|
import 'package:twonly/src/database/tables/groups.table.dart';
|
||||||
import 'package:twonly/src/database/tables/mediafiles.table.dart';
|
import 'package:twonly/src/database/tables/mediafiles.table.dart';
|
||||||
|
|
@ -10,7 +9,7 @@ enum MessageType { media, text }
|
||||||
class Messages extends Table {
|
class Messages extends Table {
|
||||||
TextColumn get groupId =>
|
TextColumn get groupId =>
|
||||||
text().references(Groups, #groupId, onDelete: KeyAction.cascade)();
|
text().references(Groups, #groupId, onDelete: KeyAction.cascade)();
|
||||||
TextColumn get messageId => text().clientDefault(() => uuid.v7())();
|
TextColumn get messageId => text()();
|
||||||
|
|
||||||
// in case senderId is null, it was send by user itself
|
// in case senderId is null, it was send by user itself
|
||||||
IntColumn get senderId =>
|
IntColumn get senderId =>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hashlib/random.dart';
|
|
||||||
import 'package:twonly/src/database/tables/contacts.table.dart';
|
import 'package:twonly/src/database/tables/contacts.table.dart';
|
||||||
import 'package:twonly/src/database/tables/messages.table.dart';
|
import 'package:twonly/src/database/tables/messages.table.dart';
|
||||||
|
|
||||||
@DataClassName('Receipt')
|
@DataClassName('Receipt')
|
||||||
class Receipts extends Table {
|
class Receipts extends Table {
|
||||||
TextColumn get receiptId => text().clientDefault(() => uuid.v4())();
|
TextColumn get receiptId => text()();
|
||||||
|
|
||||||
IntColumn get contactId =>
|
IntColumn get contactId =>
|
||||||
integer().references(Contacts, #userId, onDelete: KeyAction.cascade)();
|
integer().references(Contacts, #userId, onDelete: KeyAction.cascade)();
|
||||||
|
|
|
||||||
|
|
@ -606,9 +606,7 @@ class $GroupsTable extends Groups with TableInfo<$GroupsTable, Group> {
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumn<String> groupId = GeneratedColumn<String>(
|
late final GeneratedColumn<String> groupId = GeneratedColumn<String>(
|
||||||
'group_id', aliasedName, false,
|
'group_id', aliasedName, false,
|
||||||
type: DriftSqlType.string,
|
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||||
requiredDuringInsert: false,
|
|
||||||
clientDefault: () => uuid.v4());
|
|
||||||
static const VerificationMeta _isGroupAdminMeta =
|
static const VerificationMeta _isGroupAdminMeta =
|
||||||
const VerificationMeta('isGroupAdmin');
|
const VerificationMeta('isGroupAdmin');
|
||||||
@override
|
@override
|
||||||
|
|
@ -759,6 +757,8 @@ class $GroupsTable extends Groups with TableInfo<$GroupsTable, Group> {
|
||||||
if (data.containsKey('group_id')) {
|
if (data.containsKey('group_id')) {
|
||||||
context.handle(_groupIdMeta,
|
context.handle(_groupIdMeta,
|
||||||
groupId.isAcceptableOrUnknown(data['group_id']!, _groupIdMeta));
|
groupId.isAcceptableOrUnknown(data['group_id']!, _groupIdMeta));
|
||||||
|
} else if (isInserting) {
|
||||||
|
context.missing(_groupIdMeta);
|
||||||
}
|
}
|
||||||
if (data.containsKey('is_group_admin')) {
|
if (data.containsKey('is_group_admin')) {
|
||||||
context.handle(
|
context.handle(
|
||||||
|
|
@ -1239,7 +1239,7 @@ class GroupsCompanion extends UpdateCompanion<Group> {
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
});
|
});
|
||||||
GroupsCompanion.insert({
|
GroupsCompanion.insert({
|
||||||
this.groupId = const Value.absent(),
|
required String groupId,
|
||||||
required bool isGroupAdmin,
|
required bool isGroupAdmin,
|
||||||
required bool isDirectChat,
|
required bool isDirectChat,
|
||||||
this.pinned = const Value.absent(),
|
this.pinned = const Value.absent(),
|
||||||
|
|
@ -1256,7 +1256,8 @@ class GroupsCompanion extends UpdateCompanion<Group> {
|
||||||
this.flameCounter = const Value.absent(),
|
this.flameCounter = const Value.absent(),
|
||||||
this.lastMessageExchange = const Value.absent(),
|
this.lastMessageExchange = const Value.absent(),
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
}) : isGroupAdmin = Value(isGroupAdmin),
|
}) : groupId = Value(groupId),
|
||||||
|
isGroupAdmin = Value(isGroupAdmin),
|
||||||
isDirectChat = Value(isDirectChat),
|
isDirectChat = Value(isDirectChat),
|
||||||
groupName = Value(groupName);
|
groupName = Value(groupName);
|
||||||
static Insertable<Group> custom({
|
static Insertable<Group> custom({
|
||||||
|
|
@ -1442,9 +1443,7 @@ class $MediaFilesTable extends MediaFiles
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumn<String> mediaId = GeneratedColumn<String>(
|
late final GeneratedColumn<String> mediaId = GeneratedColumn<String>(
|
||||||
'media_id', aliasedName, false,
|
'media_id', aliasedName, false,
|
||||||
type: DriftSqlType.string,
|
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||||
requiredDuringInsert: false,
|
|
||||||
clientDefault: () => uuid.v7());
|
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumnWithTypeConverter<MediaType, String> type =
|
late final GeneratedColumnWithTypeConverter<MediaType, String> type =
|
||||||
GeneratedColumn<String>('type', aliasedName, false,
|
GeneratedColumn<String>('type', aliasedName, false,
|
||||||
|
|
@ -1566,6 +1565,8 @@ class $MediaFilesTable extends MediaFiles
|
||||||
if (data.containsKey('media_id')) {
|
if (data.containsKey('media_id')) {
|
||||||
context.handle(_mediaIdMeta,
|
context.handle(_mediaIdMeta,
|
||||||
mediaId.isAcceptableOrUnknown(data['media_id']!, _mediaIdMeta));
|
mediaId.isAcceptableOrUnknown(data['media_id']!, _mediaIdMeta));
|
||||||
|
} else if (isInserting) {
|
||||||
|
context.missing(_mediaIdMeta);
|
||||||
}
|
}
|
||||||
if (data.containsKey('requires_authentication')) {
|
if (data.containsKey('requires_authentication')) {
|
||||||
context.handle(
|
context.handle(
|
||||||
|
|
@ -2020,7 +2021,7 @@ class MediaFilesCompanion extends UpdateCompanion<MediaFile> {
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
});
|
});
|
||||||
MediaFilesCompanion.insert({
|
MediaFilesCompanion.insert({
|
||||||
this.mediaId = const Value.absent(),
|
required String mediaId,
|
||||||
required MediaType type,
|
required MediaType type,
|
||||||
this.uploadState = const Value.absent(),
|
this.uploadState = const Value.absent(),
|
||||||
this.downloadState = const Value.absent(),
|
this.downloadState = const Value.absent(),
|
||||||
|
|
@ -2035,7 +2036,8 @@ class MediaFilesCompanion extends UpdateCompanion<MediaFile> {
|
||||||
this.encryptionNonce = const Value.absent(),
|
this.encryptionNonce = const Value.absent(),
|
||||||
this.createdAt = const Value.absent(),
|
this.createdAt = const Value.absent(),
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
}) : type = Value(type);
|
}) : mediaId = Value(mediaId),
|
||||||
|
type = Value(type);
|
||||||
static Insertable<MediaFile> custom({
|
static Insertable<MediaFile> custom({
|
||||||
Expression<String>? mediaId,
|
Expression<String>? mediaId,
|
||||||
Expression<String>? type,
|
Expression<String>? type,
|
||||||
|
|
@ -2212,9 +2214,7 @@ class $MessagesTable extends Messages with TableInfo<$MessagesTable, Message> {
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumn<String> messageId = GeneratedColumn<String>(
|
late final GeneratedColumn<String> messageId = GeneratedColumn<String>(
|
||||||
'message_id', aliasedName, false,
|
'message_id', aliasedName, false,
|
||||||
type: DriftSqlType.string,
|
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||||
requiredDuringInsert: false,
|
|
||||||
clientDefault: () => uuid.v7());
|
|
||||||
static const VerificationMeta _senderIdMeta =
|
static const VerificationMeta _senderIdMeta =
|
||||||
const VerificationMeta('senderId');
|
const VerificationMeta('senderId');
|
||||||
@override
|
@override
|
||||||
|
|
@ -2334,6 +2334,8 @@ class $MessagesTable extends Messages with TableInfo<$MessagesTable, Message> {
|
||||||
if (data.containsKey('message_id')) {
|
if (data.containsKey('message_id')) {
|
||||||
context.handle(_messageIdMeta,
|
context.handle(_messageIdMeta,
|
||||||
messageId.isAcceptableOrUnknown(data['message_id']!, _messageIdMeta));
|
messageId.isAcceptableOrUnknown(data['message_id']!, _messageIdMeta));
|
||||||
|
} else if (isInserting) {
|
||||||
|
context.missing(_messageIdMeta);
|
||||||
}
|
}
|
||||||
if (data.containsKey('sender_id')) {
|
if (data.containsKey('sender_id')) {
|
||||||
context.handle(_senderIdMeta,
|
context.handle(_senderIdMeta,
|
||||||
|
|
@ -2714,7 +2716,7 @@ class MessagesCompanion extends UpdateCompanion<Message> {
|
||||||
});
|
});
|
||||||
MessagesCompanion.insert({
|
MessagesCompanion.insert({
|
||||||
required String groupId,
|
required String groupId,
|
||||||
this.messageId = const Value.absent(),
|
required String messageId,
|
||||||
this.senderId = const Value.absent(),
|
this.senderId = const Value.absent(),
|
||||||
required MessageType type,
|
required MessageType type,
|
||||||
this.content = const Value.absent(),
|
this.content = const Value.absent(),
|
||||||
|
|
@ -2728,6 +2730,7 @@ class MessagesCompanion extends UpdateCompanion<Message> {
|
||||||
this.modifiedAt = const Value.absent(),
|
this.modifiedAt = const Value.absent(),
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
}) : groupId = Value(groupId),
|
}) : groupId = Value(groupId),
|
||||||
|
messageId = Value(messageId),
|
||||||
type = Value(type);
|
type = Value(type);
|
||||||
static Insertable<Message> custom({
|
static Insertable<Message> custom({
|
||||||
Expression<String>? groupId,
|
Expression<String>? groupId,
|
||||||
|
|
@ -3744,9 +3747,7 @@ class $ReceiptsTable extends Receipts with TableInfo<$ReceiptsTable, Receipt> {
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumn<String> receiptId = GeneratedColumn<String>(
|
late final GeneratedColumn<String> receiptId = GeneratedColumn<String>(
|
||||||
'receipt_id', aliasedName, false,
|
'receipt_id', aliasedName, false,
|
||||||
type: DriftSqlType.string,
|
type: DriftSqlType.string, requiredDuringInsert: true);
|
||||||
requiredDuringInsert: false,
|
|
||||||
clientDefault: () => uuid.v4());
|
|
||||||
static const VerificationMeta _contactIdMeta =
|
static const VerificationMeta _contactIdMeta =
|
||||||
const VerificationMeta('contactId');
|
const VerificationMeta('contactId');
|
||||||
@override
|
@override
|
||||||
|
|
@ -3834,6 +3835,8 @@ class $ReceiptsTable extends Receipts with TableInfo<$ReceiptsTable, Receipt> {
|
||||||
if (data.containsKey('receipt_id')) {
|
if (data.containsKey('receipt_id')) {
|
||||||
context.handle(_receiptIdMeta,
|
context.handle(_receiptIdMeta,
|
||||||
receiptId.isAcceptableOrUnknown(data['receipt_id']!, _receiptIdMeta));
|
receiptId.isAcceptableOrUnknown(data['receipt_id']!, _receiptIdMeta));
|
||||||
|
} else if (isInserting) {
|
||||||
|
context.missing(_receiptIdMeta);
|
||||||
}
|
}
|
||||||
if (data.containsKey('contact_id')) {
|
if (data.containsKey('contact_id')) {
|
||||||
context.handle(_contactIdMeta,
|
context.handle(_contactIdMeta,
|
||||||
|
|
@ -4119,7 +4122,7 @@ class ReceiptsCompanion extends UpdateCompanion<Receipt> {
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
});
|
});
|
||||||
ReceiptsCompanion.insert({
|
ReceiptsCompanion.insert({
|
||||||
this.receiptId = const Value.absent(),
|
required String receiptId,
|
||||||
required int contactId,
|
required int contactId,
|
||||||
this.messageId = const Value.absent(),
|
this.messageId = const Value.absent(),
|
||||||
required Uint8List message,
|
required Uint8List message,
|
||||||
|
|
@ -4129,7 +4132,8 @@ class ReceiptsCompanion extends UpdateCompanion<Receipt> {
|
||||||
this.lastRetry = const Value.absent(),
|
this.lastRetry = const Value.absent(),
|
||||||
this.createdAt = const Value.absent(),
|
this.createdAt = const Value.absent(),
|
||||||
this.rowid = const Value.absent(),
|
this.rowid = const Value.absent(),
|
||||||
}) : contactId = Value(contactId),
|
}) : receiptId = Value(receiptId),
|
||||||
|
contactId = Value(contactId),
|
||||||
message = Value(message);
|
message = Value(message);
|
||||||
static Insertable<Receipt> custom({
|
static Insertable<Receipt> custom({
|
||||||
Expression<String>? receiptId,
|
Expression<String>? receiptId,
|
||||||
|
|
@ -6992,7 +6996,7 @@ typedef $$ContactsTableProcessedTableManager = ProcessedTableManager<
|
||||||
bool signalContactPreKeysRefs,
|
bool signalContactPreKeysRefs,
|
||||||
bool signalContactSignedPreKeysRefs})>;
|
bool signalContactSignedPreKeysRefs})>;
|
||||||
typedef $$GroupsTableCreateCompanionBuilder = GroupsCompanion Function({
|
typedef $$GroupsTableCreateCompanionBuilder = GroupsCompanion Function({
|
||||||
Value<String> groupId,
|
required String groupId,
|
||||||
required bool isGroupAdmin,
|
required bool isGroupAdmin,
|
||||||
required bool isDirectChat,
|
required bool isDirectChat,
|
||||||
Value<bool> pinned,
|
Value<bool> pinned,
|
||||||
|
|
@ -7346,7 +7350,7 @@ class $$GroupsTableTableManager extends RootTableManager<
|
||||||
rowid: rowid,
|
rowid: rowid,
|
||||||
),
|
),
|
||||||
createCompanionCallback: ({
|
createCompanionCallback: ({
|
||||||
Value<String> groupId = const Value.absent(),
|
required String groupId,
|
||||||
required bool isGroupAdmin,
|
required bool isGroupAdmin,
|
||||||
required bool isDirectChat,
|
required bool isDirectChat,
|
||||||
Value<bool> pinned = const Value.absent(),
|
Value<bool> pinned = const Value.absent(),
|
||||||
|
|
@ -7425,7 +7429,7 @@ typedef $$GroupsTableProcessedTableManager = ProcessedTableManager<
|
||||||
Group,
|
Group,
|
||||||
PrefetchHooks Function({bool messagesRefs})>;
|
PrefetchHooks Function({bool messagesRefs})>;
|
||||||
typedef $$MediaFilesTableCreateCompanionBuilder = MediaFilesCompanion Function({
|
typedef $$MediaFilesTableCreateCompanionBuilder = MediaFilesCompanion Function({
|
||||||
Value<String> mediaId,
|
required String mediaId,
|
||||||
required MediaType type,
|
required MediaType type,
|
||||||
Value<UploadState?> uploadState,
|
Value<UploadState?> uploadState,
|
||||||
Value<DownloadState?> downloadState,
|
Value<DownloadState?> downloadState,
|
||||||
|
|
@ -7758,7 +7762,7 @@ class $$MediaFilesTableTableManager extends RootTableManager<
|
||||||
rowid: rowid,
|
rowid: rowid,
|
||||||
),
|
),
|
||||||
createCompanionCallback: ({
|
createCompanionCallback: ({
|
||||||
Value<String> mediaId = const Value.absent(),
|
required String mediaId,
|
||||||
required MediaType type,
|
required MediaType type,
|
||||||
Value<UploadState?> uploadState = const Value.absent(),
|
Value<UploadState?> uploadState = const Value.absent(),
|
||||||
Value<DownloadState?> downloadState = const Value.absent(),
|
Value<DownloadState?> downloadState = const Value.absent(),
|
||||||
|
|
@ -7838,7 +7842,7 @@ typedef $$MediaFilesTableProcessedTableManager = ProcessedTableManager<
|
||||||
PrefetchHooks Function({bool messagesRefs})>;
|
PrefetchHooks Function({bool messagesRefs})>;
|
||||||
typedef $$MessagesTableCreateCompanionBuilder = MessagesCompanion Function({
|
typedef $$MessagesTableCreateCompanionBuilder = MessagesCompanion Function({
|
||||||
required String groupId,
|
required String groupId,
|
||||||
Value<String> messageId,
|
required String messageId,
|
||||||
Value<int?> senderId,
|
Value<int?> senderId,
|
||||||
required MessageType type,
|
required MessageType type,
|
||||||
Value<String?> content,
|
Value<String?> content,
|
||||||
|
|
@ -8587,7 +8591,7 @@ class $$MessagesTableTableManager extends RootTableManager<
|
||||||
),
|
),
|
||||||
createCompanionCallback: ({
|
createCompanionCallback: ({
|
||||||
required String groupId,
|
required String groupId,
|
||||||
Value<String> messageId = const Value.absent(),
|
required String messageId,
|
||||||
Value<int?> senderId = const Value.absent(),
|
Value<int?> senderId = const Value.absent(),
|
||||||
required MessageType type,
|
required MessageType type,
|
||||||
Value<String?> content = const Value.absent(),
|
Value<String?> content = const Value.absent(),
|
||||||
|
|
@ -9647,7 +9651,7 @@ typedef $$GroupMembersTableProcessedTableManager = ProcessedTableManager<
|
||||||
GroupMember,
|
GroupMember,
|
||||||
PrefetchHooks Function({bool contactId})>;
|
PrefetchHooks Function({bool contactId})>;
|
||||||
typedef $$ReceiptsTableCreateCompanionBuilder = ReceiptsCompanion Function({
|
typedef $$ReceiptsTableCreateCompanionBuilder = ReceiptsCompanion Function({
|
||||||
Value<String> receiptId,
|
required String receiptId,
|
||||||
required int contactId,
|
required int contactId,
|
||||||
Value<String?> messageId,
|
Value<String?> messageId,
|
||||||
required Uint8List message,
|
required Uint8List message,
|
||||||
|
|
@ -9969,7 +9973,7 @@ class $$ReceiptsTableTableManager extends RootTableManager<
|
||||||
rowid: rowid,
|
rowid: rowid,
|
||||||
),
|
),
|
||||||
createCompanionCallback: ({
|
createCompanionCallback: ({
|
||||||
Value<String> receiptId = const Value.absent(),
|
required String receiptId,
|
||||||
required int contactId,
|
required int contactId,
|
||||||
Value<String?> messageId = const Value.absent(),
|
Value<String?> messageId = const Value.absent(),
|
||||||
required Uint8List message,
|
required Uint8List message,
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,12 @@ class UserData {
|
||||||
required this.username,
|
required this.username,
|
||||||
required this.displayName,
|
required this.displayName,
|
||||||
required this.subscriptionPlan,
|
required this.subscriptionPlan,
|
||||||
required this.isDemoUser,
|
|
||||||
});
|
});
|
||||||
factory UserData.fromJson(Map<String, dynamic> json) =>
|
factory UserData.fromJson(Map<String, dynamic> json) =>
|
||||||
_$UserDataFromJson(json);
|
_$UserDataFromJson(json);
|
||||||
|
|
||||||
final int userId;
|
final int userId;
|
||||||
|
|
||||||
@JsonKey(defaultValue: false)
|
|
||||||
bool isDemoUser = false;
|
|
||||||
|
|
||||||
// -- USER PROFILE --
|
// -- USER PROFILE --
|
||||||
|
|
||||||
String username;
|
String username;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ UserData _$UserDataFromJson(Map<String, dynamic> json) => UserData(
|
||||||
username: json['username'] as String,
|
username: json['username'] as String,
|
||||||
displayName: json['displayName'] as String,
|
displayName: json['displayName'] as String,
|
||||||
subscriptionPlan: json['subscriptionPlan'] as String? ?? 'Free',
|
subscriptionPlan: json['subscriptionPlan'] as String? ?? 'Free',
|
||||||
isDemoUser: json['isDemoUser'] as bool? ?? false,
|
|
||||||
)
|
)
|
||||||
..avatarSvg = json['avatarSvg'] as String?
|
..avatarSvg = json['avatarSvg'] as String?
|
||||||
..avatarJson = json['avatarJson'] as String?
|
..avatarJson = json['avatarJson'] as String?
|
||||||
|
|
@ -74,7 +73,6 @@ UserData _$UserDataFromJson(Map<String, dynamic> json) => UserData(
|
||||||
|
|
||||||
Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
||||||
'userId': instance.userId,
|
'userId': instance.userId,
|
||||||
'isDemoUser': instance.isDemoUser,
|
|
||||||
'username': instance.username,
|
'username': instance.username,
|
||||||
'displayName': instance.displayName,
|
'displayName': instance.displayName,
|
||||||
'avatarSvg': instance.avatarSvg,
|
'avatarSvg': instance.avatarSvg,
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ class ApiService {
|
||||||
reconnectionTimer?.cancel();
|
reconnectionTimer?.cancel();
|
||||||
reconnectionTimer = null;
|
reconnectionTimer = null;
|
||||||
final user = await getUser();
|
final user = await getUser();
|
||||||
if (user != null && user.isDemoUser) {
|
if (user != null) {
|
||||||
globalCallbackConnectionState(isConnected: true);
|
globalCallbackConnectionState(isConnected: true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import 'package:twonly/src/views/settings/backup/backup.view.dart';
|
||||||
Future<void> performTwonlySafeBackup({bool force = false}) async {
|
Future<void> performTwonlySafeBackup({bool force = false}) async {
|
||||||
final user = await getUser();
|
final user = await getUser();
|
||||||
|
|
||||||
if (user == null || user.twonlySafeBackup == null || user.isDemoUser) {
|
if (user == null || user.twonlySafeBackup == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ class _RegisterViewState extends State<RegisterView> {
|
||||||
username: username,
|
username: username,
|
||||||
displayName: username,
|
displayName: username,
|
||||||
subscriptionPlan: 'Preview',
|
subscriptionPlan: 'Preview',
|
||||||
isDemoUser: false,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await const FlutterSecureStorage()
|
await const FlutterSecureStorage()
|
||||||
|
|
|
||||||
15
lib/src/views/updates/62_database_migration.view.dart
Normal file
15
lib/src/views/updates/62_database_migration.view.dart
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class DatabaseMigrationView extends StatefulWidget {
|
||||||
|
const DatabaseMigrationView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<DatabaseMigrationView> createState() => _DatabaseMigrationViewState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DatabaseMigrationViewState extends State<DatabaseMigrationView> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return const Placeholder();
|
||||||
|
}
|
||||||
|
}
|
||||||
76
pubspec.lock
76
pubspec.lock
|
|
@ -101,18 +101,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_daemon
|
name: build_daemon
|
||||||
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
|
sha256: "409002f1adeea601018715d613115cfaf0e31f512cb80ae4534c79867ae2363d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.4"
|
version: "4.1.0"
|
||||||
build_runner:
|
build_runner:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1"
|
sha256: a9461b8e586bf018dd4afd2e13b49b08c6a844a4b226c8d1d10f3a723cdd78c3
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.0"
|
version: "2.10.1"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -157,10 +157,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: camera
|
name: camera
|
||||||
sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d
|
sha256: "87a27e0553e3432119c1c2f6e4b9a1bbf7d2c660552b910bfa59185a9facd632"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.2"
|
version: "0.11.2+1"
|
||||||
camera_android_camerax:
|
camera_android_camerax:
|
||||||
dependency: "direct overridden"
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
|
|
@ -174,10 +174,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: camera_avfoundation
|
name: camera_avfoundation
|
||||||
sha256: "397f44f8a63c8c0a474668d500f9739d4f2bc45ac2b21801194b7d29260f03ee"
|
sha256: "34bcd5db30e52414f1f0783c5e3f566909fab14141a21b3b576c78bd35382bf6"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.22+1"
|
version: "0.9.22+4"
|
||||||
camera_platform_interface:
|
camera_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -334,10 +334,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6"
|
sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.1.0"
|
version: "12.2.0"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -358,18 +358,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: drift
|
name: drift
|
||||||
sha256: "540cf382a3bfa99b76e51514db5b0ebcd81ce3679b7c1c9cb9478ff3735e47a1"
|
sha256: "83290a32ae006a7535c5ecf300722cb77177250d9df4ee2becc5fa8a36095114"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.28.2"
|
version: "2.29.0"
|
||||||
drift_dev:
|
drift_dev:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: drift_dev
|
name: drift_dev
|
||||||
sha256: "4db0eeedc7e8bed117a9f22d867ab7a3a294300fed5c269aac90d0b3545967ca"
|
sha256: "6019f827544e77524ffd5134ae0cb75dfd92ef5ef3e269872af92840c929cd43"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.28.3"
|
version: "2.29.0"
|
||||||
drift_flutter:
|
drift_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -422,10 +422,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_macos
|
name: file_selector_macos
|
||||||
sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c"
|
sha256: "88707a3bec4b988aaed3b4df5d7441ee4e987f20b286cddca5d6a8270cab23f2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.4+4"
|
version: "0.9.4+5"
|
||||||
file_selector_platform_interface:
|
file_selector_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -738,10 +738,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: font_awesome_flutter
|
name: font_awesome_flutter
|
||||||
sha256: "27af5982e6c510dec1ba038eff634fa284676ee84e3fd807225c80c4ad869177"
|
sha256: b9011df3a1fa02993630b8fb83526368cf2206a711259830325bab2f1d2a4eb0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.10.0"
|
version: "10.12.0"
|
||||||
gal:
|
gal:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -866,10 +866,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_ios
|
name: image_picker_ios
|
||||||
sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e
|
sha256: e675c22790bcc24e9abd455deead2b7a88de4b79f7327a281812f14de1a56f58
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.13"
|
version: "0.8.13+1"
|
||||||
image_picker_linux:
|
image_picker_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -882,18 +882,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_macos
|
name: image_picker_macos
|
||||||
sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04
|
sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.2"
|
version: "0.2.2+1"
|
||||||
image_picker_platform_interface:
|
image_picker_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_platform_interface
|
name: image_picker_platform_interface
|
||||||
sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665"
|
sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.1"
|
||||||
image_picker_windows:
|
image_picker_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1186,10 +1186,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd"
|
sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "2.4.3"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1403,10 +1403,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: share_plus
|
name: share_plus
|
||||||
sha256: "3424e9d5c22fd7f7590254ba09465febd6f8827c8b19a44350de4ac31d92d3a6"
|
sha256: "14c8860d4de93d3a7e53af51bff479598c4e999605290756bbbe45cf65b37840"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.0.0"
|
version: "12.0.1"
|
||||||
share_plus_platform_interface:
|
share_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1435,10 +1435,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_foundation
|
name: shared_preferences_foundation
|
||||||
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
|
sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.4"
|
version: "2.5.5"
|
||||||
shared_preferences_linux:
|
shared_preferences_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1584,10 +1584,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqlparser
|
name: sqlparser
|
||||||
sha256: "57090342af1ce32bb499aa641f4ecdd2d6231b9403cea537ac059e803cc20d67"
|
sha256: "54eea43e36dd3769274c3108625f9ea1a382f8d2ac8b16f3e4589d9bd9b0e16c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.41.2"
|
version: "0.42.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1688,10 +1688,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_ios
|
name: url_launcher_ios
|
||||||
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
|
sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.4"
|
version: "6.3.5"
|
||||||
url_launcher_linux:
|
url_launcher_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1704,10 +1704,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_macos
|
name: url_launcher_macos
|
||||||
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
|
sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.3"
|
version: "3.2.4"
|
||||||
url_launcher_platform_interface:
|
url_launcher_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1808,10 +1808,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: video_player_avfoundation
|
name: video_player_avfoundation
|
||||||
sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd
|
sha256: "19ed1162a7a5520e7d7791e0b7b73ba03161b6a69428b82e4689e435b325432d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.4"
|
version: "2.8.5"
|
||||||
video_player_platform_interface:
|
video_player_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue