Merge branch 'master' into feature/create-post-redesign

This commit is contained in:
shilangyu 2022-05-03 18:09:33 +02:00
commit df85b6271e
26 changed files with 269 additions and 293 deletions

View File

@ -1,85 +1,37 @@
PODS:
- DKImagePickerController/Core (4.3.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.2)
- DKImagePickerController/PhotoGallery (4.3.2):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.2)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
- flutter_keyboard_visibility (0.0.1):
- Flutter
- image_picker (0.0.1):
- image_picker_ios (0.0.1):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- path_provider_ios (0.0.1):
- Flutter
- SDWebImage (5.12.2):
- SDWebImage/Core (= 5.12.2)
- SDWebImage/Core (5.12.2)
- share_plus (0.0.1):
- Flutter
- shared_preferences_ios (0.0.1):
- Flutter
- SwiftyGif (5.4.2)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- SDWebImage
- SwiftyGif
EXTERNAL SOURCES:
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
flutter_keyboard_visibility:
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
image_picker:
:path: ".symlinks/plugins/image_picker/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_ios:
@ -92,20 +44,15 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
image_picker: 9aa50e1d8cdacdbed739e925b7eea16d014367e6
image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
SDWebImage: 240e5c12b592fb1268c1d03b8c90d90e8c2ffe82
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
shared_preferences_ios: aef470a42dc4675a1cdd50e3158b42e3d1232b32
SwiftyGif: dec758a9dd3d278e5a855dbf279bf062c923c387
url_launcher_ios: 02f1989d4e14e998335b02b67a7590fa34f971af
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
COCOAPODS: 1.11.2
COCOAPODS: 1.11.3

View File

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fuzzy/fuzzy.dart';
@ -112,8 +113,11 @@ class CommunitiesTab extends HookWidget {
final instances = instancesRefreshable.snapshot.data!;
final communities = communitiesRefreshable.snapshot.data!
..forEach((e) =>
e.sort((a, b) => a.community.name.compareTo(b.community.name)));
.map(
(e) =>
e.sorted((a, b) => a.community.name.compareTo(b.community.name)),
)
.toList();
final filterIcon = () {
if (filterController.text.isEmpty) {

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:lemmy_api_client/v3.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../../hooks/logged_in_action.dart';
import '../../url_launcher.dart';
import '../../util/extensions/api.dart';
import '../../util/mobx_provider.dart';
import '../../util/observer_consumers.dart';
@ -28,10 +28,10 @@ class CommunityMoreMenu extends HookWidget {
ListTile(
leading: const Icon(Icons.open_in_browser),
title: const Text('Open in browser'),
onTap: () async => await ul.canLaunch(communityView.community.actorId)
? ul.launch(communityView.community.actorId)
: ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("can't open in browser"))),
onTap: () => launchLink(
link: communityView.community.actorId,
context: context,
),
),
ObserverBuilder<CommunityStore>(builder: (context, store) {
return ListTile(

View File

@ -9,14 +9,16 @@ part of 'community_store.dart';
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$CommunityStore on _CommunityStore, Store {
final _$refreshAsyncAction = AsyncAction('_CommunityStore.refresh');
late final _$refreshAsyncAction =
AsyncAction('_CommunityStore.refresh', context: context);
@override
Future<void> refresh(Jwt? token) {
return _$refreshAsyncAction.run(() => super.refresh(token));
}
final _$subscribeAsyncAction = AsyncAction('_CommunityStore.subscribe');
late final _$subscribeAsyncAction =
AsyncAction('_CommunityStore.subscribe', context: context);
@override
Future<void> subscribe(Jwt token) {

View File

@ -38,7 +38,8 @@ mixin _$FullPostStore on _FullPostStore, Store {
name: '_FullPostStore.comments'))
.value;
final _$fullPostViewAtom = Atom(name: '_FullPostStore.fullPostView');
late final _$fullPostViewAtom =
Atom(name: '_FullPostStore.fullPostView', context: context);
@override
FullPostView? get fullPostView {
@ -53,7 +54,8 @@ mixin _$FullPostStore on _FullPostStore, Store {
});
}
final _$newCommentsAtom = Atom(name: '_FullPostStore.newComments');
late final _$newCommentsAtom =
Atom(name: '_FullPostStore.newComments', context: context);
@override
ObservableList<CommentView> get newComments {
@ -68,7 +70,8 @@ mixin _$FullPostStore on _FullPostStore, Store {
});
}
final _$sortingAtom = Atom(name: '_FullPostStore.sorting');
late final _$sortingAtom =
Atom(name: '_FullPostStore.sorting', context: context);
@override
CommentSortType get sorting {
@ -83,7 +86,8 @@ mixin _$FullPostStore on _FullPostStore, Store {
});
}
final _$postStoreAtom = Atom(name: '_FullPostStore.postStore');
late final _$postStoreAtom =
Atom(name: '_FullPostStore.postStore', context: context);
@override
PostStore? get postStore {
@ -98,23 +102,24 @@ mixin _$FullPostStore on _FullPostStore, Store {
});
}
final _$refreshAsyncAction = AsyncAction('_FullPostStore.refresh');
late final _$refreshAsyncAction =
AsyncAction('_FullPostStore.refresh', context: context);
@override
Future<void> refresh([Jwt? token]) {
return _$refreshAsyncAction.run(() => super.refresh(token));
}
final _$blockCommunityAsyncAction =
AsyncAction('_FullPostStore.blockCommunity');
late final _$blockCommunityAsyncAction =
AsyncAction('_FullPostStore.blockCommunity', context: context);
@override
Future<void> blockCommunity(Jwt token) {
return _$blockCommunityAsyncAction.run(() => super.blockCommunity(token));
}
final _$_FullPostStoreActionController =
ActionController(name: '_FullPostStore');
late final _$_FullPostStoreActionController =
ActionController(name: '_FullPostStore', context: context);
@override
void updateSorting(CommentSortType sort) {

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:lemmy_api_client/v3.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../../l10n/l10n.dart';
import '../../stores/accounts_store.dart';
import '../../url_launcher.dart';
import '../../util/observer_consumers.dart';
import '../../widgets/bottom_modal.dart';
import '../../widgets/info_table_popup.dart';
@ -37,17 +37,7 @@ class InstanceMoreMenu extends StatelessWidget {
ListTile(
leading: const Icon(Icons.open_in_browser),
title: Text(L10n.of(context).open_in_browser),
onTap: () async {
if (await ul.canLaunch(instanceUrl)) {
await ul.launch(instanceUrl);
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(L10n.of(context).cannot_open_in_browser),
),
);
}
},
onTap: () => launchLink(link: instanceUrl, context: context),
),
ListTile(
leading: const Icon(Icons.info_outline),

View File

@ -9,15 +9,16 @@ part of 'instance_store.dart';
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$InstanceStore on _InstanceStore, Store {
final _$fetchAsyncAction = AsyncAction('_InstanceStore.fetch');
late final _$fetchAsyncAction =
AsyncAction('_InstanceStore.fetch', context: context);
@override
Future<void> fetch(Jwt? token, {bool refresh = false}) {
return _$fetchAsyncAction.run(() => super.fetch(token, refresh: refresh));
}
final _$fetchCommunitesAsyncAction =
AsyncAction('_InstanceStore.fetchCommunites');
late final _$fetchCommunitesAsyncAction =
AsyncAction('_InstanceStore.fetchCommunites', context: context);
@override
Future<void> fetchCommunites(Jwt? token, {bool refresh = false}) {

View File

@ -9,8 +9,8 @@ part of 'log_console_page_store.dart';
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$LogConsolePageStore on _LogConsolePageStore, Store {
final _$_LogConsolePageStoreActionController =
ActionController(name: '_LogConsolePageStore');
late final _$_LogConsolePageStoreActionController =
ActionController(name: '_LogConsolePageStore', context: context);
@override
void addLog(LogRecord logRecord) {

View File

@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:lemmy_api_client/pictrs.dart';
import 'package:lemmy_api_client/v3.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../hooks/delayed_loading.dart';
import '../hooks/stores.dart';
import '../l10n/l10n.dart';
import '../url_launcher.dart';
import '../util/files.dart';
import '../util/icons.dart';
import '../util/pictrs.dart';
@ -47,13 +47,12 @@ class ManageAccountPage extends HookWidget {
final userProfileUrl =
await userFuture.then((e) => e.person.actorId);
if (await ul.canLaunch(userProfileUrl)) {
await ul.launch(userProfileUrl);
final didLaunch = await launchLink(
link: userProfileUrl,
context: context,
);
if (didLaunch) {
Navigator.of(context).pop();
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("can't open in browser")),
);
}
},
),

View File

@ -24,7 +24,7 @@ mixin _$ModlogPageStore on _ModlogPageStore, Store {
name: '_ModlogPageStore.hasNextPage'))
.value;
final _$pageAtom = Atom(name: '_ModlogPageStore.page');
late final _$pageAtom = Atom(name: '_ModlogPageStore.page', context: context);
@override
int get page {
@ -39,15 +39,16 @@ mixin _$ModlogPageStore on _ModlogPageStore, Store {
});
}
final _$fetchPageAsyncAction = AsyncAction('_ModlogPageStore.fetchPage');
late final _$fetchPageAsyncAction =
AsyncAction('_ModlogPageStore.fetchPage', context: context);
@override
Future<void> fetchPage() {
return _$fetchPageAsyncAction.run(() => super.fetchPage());
}
final _$_ModlogPageStoreActionController =
ActionController(name: '_ModlogPageStore');
late final _$_ModlogPageStoreActionController =
ActionController(name: '_ModlogPageStore', context: context);
@override
void previousPage() {

View File

@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:lemmy_api_client/v3.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../../hooks/delayed_loading.dart';
import '../../hooks/stores.dart';
import '../../l10n/l10n.dart';
import '../../stores/accounts_store.dart';
import '../../stores/config_store.dart';
import '../../url_launcher.dart';
import '../../widgets/cached_network_image.dart';
import '../../widgets/fullscreenable_image.dart';
import '../../widgets/radio_picker.dart';
@ -173,8 +173,11 @@ class AddAccountPage extends HookWidget {
),
TextButton(
onPressed: () {
// TODO: extract to LemmyUrls or something
ul.launch('https://${selectedInstance.value}/login');
launchLink(
// TODO: extract to LemmyUrls or something
link: 'https://${selectedInstance.value}/login',
context: context,
);
},
child: const Text('Register'),
),

View File

@ -32,7 +32,8 @@ mixin _$BlocksStore on _BlocksStore, Store {
Computed<bool>(() => super.isUsable, name: '_BlocksStore.isUsable'))
.value;
final _$_blockedUsersAtom = Atom(name: '_BlocksStore._blockedUsers');
late final _$_blockedUsersAtom =
Atom(name: '_BlocksStore._blockedUsers', context: context);
@override
ObservableList<UserBlockStore>? get _blockedUsers {
@ -47,8 +48,8 @@ mixin _$BlocksStore on _BlocksStore, Store {
});
}
final _$_blockedCommunitiesAtom =
Atom(name: '_BlocksStore._blockedCommunities');
late final _$_blockedCommunitiesAtom =
Atom(name: '_BlocksStore._blockedCommunities', context: context);
@override
ObservableList<CommunityBlockStore>? get _blockedCommunities {
@ -63,15 +64,16 @@ mixin _$BlocksStore on _BlocksStore, Store {
});
}
final _$blockUserAsyncAction = AsyncAction('_BlocksStore.blockUser');
late final _$blockUserAsyncAction =
AsyncAction('_BlocksStore.blockUser', context: context);
@override
Future<void> blockUser(Jwt token, int id) {
return _$blockUserAsyncAction.run(() => super.blockUser(token, id));
}
final _$blockCommunityAsyncAction =
AsyncAction('_BlocksStore.blockCommunity');
late final _$blockCommunityAsyncAction =
AsyncAction('_BlocksStore.blockCommunity', context: context);
@override
Future<void> blockCommunity(Jwt token, int id) {
@ -79,7 +81,8 @@ mixin _$BlocksStore on _BlocksStore, Store {
.run(() => super.blockCommunity(token, id));
}
final _$refreshAsyncAction = AsyncAction('_BlocksStore.refresh');
late final _$refreshAsyncAction =
AsyncAction('_BlocksStore.refresh', context: context);
@override
Future<void> refresh() {

View File

@ -9,7 +9,8 @@ part of 'community_block_store.dart';
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$CommunityBlockStore on _CommunityBlockStore, Store {
final _$blockedAtom = Atom(name: '_CommunityBlockStore.blocked');
late final _$blockedAtom =
Atom(name: '_CommunityBlockStore.blocked', context: context);
@override
bool get blocked {

View File

@ -9,7 +9,8 @@ part of 'user_block_store.dart';
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$UserBlockStore on _UserBlockStore, Store {
final _$blockedAtom = Atom(name: '_UserBlockStore.blocked');
late final _$blockedAtom =
Atom(name: '_UserBlockStore.blocked', context: context);
@override
bool get blocked {

View File

@ -1 +1,3 @@
const lemmurRepositoryLink = 'https://github.com/LemmurOrg/lemmur';
const lemmurRepositoryUrl = 'https://github.com/LemmurOrg/lemmur';
const patreonUrl = 'https://patreon.com/lemmur';
const buyMeACoffeeUrl = 'https://buymeacoff.ee/lemmur';

View File

@ -41,7 +41,7 @@ const _$ThemeModeEnumMap = {
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$ConfigStore on _ConfigStore, Store {
final _$themeAtom = Atom(name: '_ConfigStore.theme');
late final _$themeAtom = Atom(name: '_ConfigStore.theme', context: context);
@override
ThemeMode get theme {
@ -56,7 +56,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$amoledDarkModeAtom = Atom(name: '_ConfigStore.amoledDarkMode');
late final _$amoledDarkModeAtom =
Atom(name: '_ConfigStore.amoledDarkMode', context: context);
@override
bool get amoledDarkMode {
@ -71,7 +72,7 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$localeAtom = Atom(name: '_ConfigStore.locale');
late final _$localeAtom = Atom(name: '_ConfigStore.locale', context: context);
@override
Locale get locale {
@ -86,7 +87,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$showAvatarsAtom = Atom(name: '_ConfigStore.showAvatars');
late final _$showAvatarsAtom =
Atom(name: '_ConfigStore.showAvatars', context: context);
@override
bool get showAvatars {
@ -101,7 +103,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$showScoresAtom = Atom(name: '_ConfigStore.showScores');
late final _$showScoresAtom =
Atom(name: '_ConfigStore.showScores', context: context);
@override
bool get showScores {
@ -116,7 +119,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$defaultSortTypeAtom = Atom(name: '_ConfigStore.defaultSortType');
late final _$defaultSortTypeAtom =
Atom(name: '_ConfigStore.defaultSortType', context: context);
@override
SortType get defaultSortType {
@ -131,8 +135,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$defaultListingTypeAtom =
Atom(name: '_ConfigStore.defaultListingType');
late final _$defaultListingTypeAtom =
Atom(name: '_ConfigStore.defaultListingType', context: context);
@override
PostListingType get defaultListingType {
@ -147,8 +151,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
});
}
final _$importLemmyUserSettingsAsyncAction =
AsyncAction('_ConfigStore.importLemmyUserSettings');
late final _$importLemmyUserSettingsAsyncAction =
AsyncAction('_ConfigStore.importLemmyUserSettings', context: context);
@override
Future<void> importLemmyUserSettings(Jwt token) {
@ -156,7 +160,8 @@ mixin _$ConfigStore on _ConfigStore, Store {
.run(() => super.importLemmyUserSettings(token));
}
final _$_ConfigStoreActionController = ActionController(name: '_ConfigStore');
late final _$_ConfigStoreActionController =
ActionController(name: '_ConfigStore', context: context);
@override
void copyLemmyUserSettings(LocalUserSettings localUserSettings) {

View File

@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import 'l10n/l10n.dart';
import 'pages/community/community.dart';
import 'pages/instance/instance.dart';
import 'pages/media_view.dart';
@ -23,7 +25,10 @@ Future<void> linkLauncher({
final instances = context.read<AccountsStore>().instances;
final chonks = url.split('/');
if (chonks.length == 1) return openInBrowser(url);
if (chonks.length == 1) {
await launchLink(link: url, context: context);
return;
}
// CHECK IF LINK TO USER
if (url.startsWith('/u/')) {
@ -97,14 +102,25 @@ Future<void> linkLauncher({
// FALLBACK TO REGULAR LINK STUFF
return openInBrowser(url);
await launchLink(link: url, context: context);
}
Future<void> openInBrowser(String url) async {
if (await ul.canLaunch(url)) {
await ul.launch(url);
final _logger = Logger('launchLink');
/// Returns whether launching was successful.
Future<bool> launchLink({
required String link,
required BuildContext context,
}) async {
final uri = Uri.tryParse(link);
if (uri != null && await ul.canLaunchUrl(uri)) {
await ul.launchUrl(uri);
return true;
} else {
throw Exception();
// TODO: handle opening links to stuff in app
_logger.warning('Failed to launch a link: $link');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(L10n.of(context).cannot_open_in_browser)),
);
return false;
}
}

View File

@ -12,36 +12,7 @@ part of 'async_store.dart';
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more informations: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
/// @nodoc
class _$AsyncStateTearOff {
const _$AsyncStateTearOff();
AsyncStateInitial<T> initial<T>() {
return AsyncStateInitial<T>();
}
AsyncStateData<T> data<T>(T data, [String? errorTerm]) {
return AsyncStateData<T>(
data,
errorTerm,
);
}
AsyncStateLoading<T> loading<T>() {
return AsyncStateLoading<T>();
}
AsyncStateError<T> error<T>(String errorTerm) {
return AsyncStateError<T>(
errorTerm,
);
}
}
/// @nodoc
const $AsyncState = _$AsyncStateTearOff();
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
/// @nodoc
mixin _$AsyncState<T> {
@ -148,7 +119,7 @@ class _$AsyncStateInitial<T>
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties..add(DiagnosticsProperty('type', 'AsyncState<$T>.initial'));
properties.add(DiagnosticsProperty('type', 'AsyncState<$T>.initial'));
}
@override
@ -398,11 +369,11 @@ class _$AsyncStateData<T>
}
abstract class AsyncStateData<T> implements AsyncState<T> {
const factory AsyncStateData(T data, [String? errorTerm]) =
const factory AsyncStateData(final T data, [final String? errorTerm]) =
_$AsyncStateData<T>;
T get data;
String? get errorTerm;
T get data => throw _privateConstructorUsedError;
String? get errorTerm => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$AsyncStateDataCopyWith<T, AsyncStateData<T>> get copyWith =>
throw _privateConstructorUsedError;
@ -442,7 +413,7 @@ class _$AsyncStateLoading<T>
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties..add(DiagnosticsProperty('type', 'AsyncState<$T>.loading'));
properties.add(DiagnosticsProperty('type', 'AsyncState<$T>.loading'));
}
@override
@ -681,9 +652,9 @@ class _$AsyncStateError<T>
}
abstract class AsyncStateError<T> implements AsyncState<T> {
const factory AsyncStateError(String errorTerm) = _$AsyncStateError<T>;
const factory AsyncStateError(final String errorTerm) = _$AsyncStateError<T>;
String get errorTerm;
String get errorTerm => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$AsyncStateErrorCopyWith<T, AsyncStateError<T>> get copyWith =>
throw _privateConstructorUsedError;

View File

@ -23,7 +23,8 @@ mixin _$AsyncStore<T> on _AsyncStore<T>, Store {
name: '_AsyncStore.errorTerm'))
.value;
final _$asyncStateAtom = Atom(name: '_AsyncStore.asyncState');
late final _$asyncStateAtom =
Atom(name: '_AsyncStore.asyncState', context: context);
@override
AsyncState<T> get asyncState {
@ -38,14 +39,16 @@ mixin _$AsyncStore<T> on _AsyncStore<T>, Store {
});
}
final _$runAsyncAction = AsyncAction('_AsyncStore.run');
late final _$runAsyncAction =
AsyncAction('_AsyncStore.run', context: context);
@override
Future<T?> run(AsyncValueGetter<T> callback, {bool refresh = false}) {
return _$runAsyncAction.run(() => super.run(callback, refresh: refresh));
}
final _$runLemmyAsyncAction = AsyncAction('_AsyncStore.runLemmy');
late final _$runLemmyAsyncAction =
AsyncAction('_AsyncStore.runLemmy', context: context);
@override
Future<T?> runLemmy(String instanceHost, LemmyApiQuery<T> query,
@ -54,7 +57,8 @@ mixin _$AsyncStore<T> on _AsyncStore<T>, Store {
.run(() => super.runLemmy(instanceHost, query, refresh: refresh));
}
final _$_AsyncStoreActionController = ActionController(name: '_AsyncStore');
late final _$_AsyncStoreActionController =
ActionController(name: '_AsyncStore', context: context);
@override
void setData(T data) {

View File

@ -43,7 +43,8 @@ class AboutTile extends HookWidget {
TextButton.icon(
icon: const Icon(Icons.code),
label: const Text('source code'),
onPressed: () => openInBrowser(lemmurRepositoryLink),
onPressed: () =>
launchLink(link: lemmurRepositoryUrl, context: context),
),
TextButton.icon(
icon: const Icon(Icons.monetization_on),
@ -56,13 +57,17 @@ class AboutTile extends HookWidget {
mainAxisSize: MainAxisSize.min,
children: [
TextButton(
onPressed: () =>
openInBrowser('https://patreon.com/lemmur'),
onPressed: () => launchLink(
link: patreonUrl,
context: context,
),
child: const Text('Patreon'),
),
TextButton(
onPressed: () =>
openInBrowser('https://buymeacoff.ee/lemmur'),
onPressed: () => launchLink(
link: buyMeACoffeeUrl,
context: context,
),
child: const Text('Buy Me a Coffee'),
),
],

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:lemmy_api_client/v3.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../../hooks/logged_in_action.dart';
import '../../l10n/l10n.dart';
import '../../url_launcher.dart';
import '../../util/extensions/api.dart';
import '../../util/icons.dart';
import '../../util/observer_consumers.dart';
@ -83,13 +83,7 @@ class _CommentMoreMenuPopup extends HookWidget {
leading: const Icon(Icons.open_in_browser),
title: const Text('Open in browser'),
onTap: () async {
if (await ul.canLaunch(comment.link)) {
await ul.launch(comment.link);
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("can't open in browser")),
);
}
await launchLink(link: comment.link, context: context);
Navigator.of(context).pop();
},

View File

@ -28,7 +28,8 @@ mixin _$CommentStore on _CommentStore, Store {
Computed<bool>(() => super.isOP, name: '_CommentStore.isOP'))
.value;
final _$commentAtom = Atom(name: '_CommentStore.comment');
late final _$commentAtom =
Atom(name: '_CommentStore.comment', context: context);
@override
CommentView get comment {
@ -43,7 +44,8 @@ mixin _$CommentStore on _CommentStore, Store {
});
}
final _$selectableAtom = Atom(name: '_CommentStore.selectable');
late final _$selectableAtom =
Atom(name: '_CommentStore.selectable', context: context);
@override
bool get selectable {
@ -58,7 +60,8 @@ mixin _$CommentStore on _CommentStore, Store {
});
}
final _$collapsedAtom = Atom(name: '_CommentStore.collapsed');
late final _$collapsedAtom =
Atom(name: '_CommentStore.collapsed', context: context);
@override
bool get collapsed {
@ -73,7 +76,8 @@ mixin _$CommentStore on _CommentStore, Store {
});
}
final _$showRawAtom = Atom(name: '_CommentStore.showRaw');
late final _$showRawAtom =
Atom(name: '_CommentStore.showRaw', context: context);
@override
bool get showRaw {
@ -88,64 +92,72 @@ mixin _$CommentStore on _CommentStore, Store {
});
}
final _$reportAsyncAction = AsyncAction('_CommentStore.report');
late final _$reportAsyncAction =
AsyncAction('_CommentStore.report', context: context);
@override
Future<void> report(Jwt token, String reason) {
return _$reportAsyncAction.run(() => super.report(token, reason));
}
final _$deleteAsyncAction = AsyncAction('_CommentStore.delete');
late final _$deleteAsyncAction =
AsyncAction('_CommentStore.delete', context: context);
@override
Future<void> delete(Jwt token) {
return _$deleteAsyncAction.run(() => super.delete(token));
}
final _$saveAsyncAction = AsyncAction('_CommentStore.save');
late final _$saveAsyncAction =
AsyncAction('_CommentStore.save', context: context);
@override
Future<void> save(Jwt token) {
return _$saveAsyncAction.run(() => super.save(token));
}
final _$blockAsyncAction = AsyncAction('_CommentStore.block');
late final _$blockAsyncAction =
AsyncAction('_CommentStore.block', context: context);
@override
Future<void> block(Jwt token) {
return _$blockAsyncAction.run(() => super.block(token));
}
final _$markAsReadAsyncAction = AsyncAction('_CommentStore.markAsRead');
late final _$markAsReadAsyncAction =
AsyncAction('_CommentStore.markAsRead', context: context);
@override
Future<void> markAsRead(Jwt token) {
return _$markAsReadAsyncAction.run(() => super.markAsRead(token));
}
final _$_voteAsyncAction = AsyncAction('_CommentStore._vote');
late final _$_voteAsyncAction =
AsyncAction('_CommentStore._vote', context: context);
@override
Future<void> _vote(VoteType voteType, Jwt token) {
return _$_voteAsyncAction.run(() => super._vote(voteType, token));
}
final _$upVoteAsyncAction = AsyncAction('_CommentStore.upVote');
late final _$upVoteAsyncAction =
AsyncAction('_CommentStore.upVote', context: context);
@override
Future<void> upVote(Jwt token) {
return _$upVoteAsyncAction.run(() => super.upVote(token));
}
final _$downVoteAsyncAction = AsyncAction('_CommentStore.downVote');
late final _$downVoteAsyncAction =
AsyncAction('_CommentStore.downVote', context: context);
@override
Future<void> downVote(Jwt token) {
return _$downVoteAsyncAction.run(() => super.downVote(token));
}
final _$_CommentStoreActionController =
ActionController(name: '_CommentStore');
late final _$_CommentStoreActionController =
ActionController(name: '_CommentStore', context: context);
@override
void toggleShowRaw() {

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:url_launcher/url_launcher.dart' as ul;
import '../../hooks/logged_in_action.dart';
import '../../pages/create_post/create_post.dart';
import '../../pages/full_post/full_post_store.dart';
import '../../stores/accounts_store.dart';
import '../../url_launcher.dart';
import '../../util/icons.dart';
import '../../util/observer_consumers.dart';
import '../bottom_modal.dart';
@ -72,10 +72,7 @@ class PostMoreMenu extends HookWidget {
ListTile(
leading: const Icon(Icons.open_in_browser),
title: const Text('Open in browser'),
onTap: () async => await ul.canLaunch(post.post.apId)
? ul.launch(post.post.apId)
: ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("can't open in browser"))),
onTap: () => launchLink(link: post.post.apId, context: context),
),
if (isMine)
ListTile(

View File

@ -23,7 +23,8 @@ mixin _$PostStore on _PostStore, Store {
Computed<bool>(() => super.hasMedia, name: '_PostStore.hasMedia'))
.value;
final _$postViewAtom = Atom(name: '_PostStore.postView');
late final _$postViewAtom =
Atom(name: '_PostStore.postView', context: context);
@override
PostView get postView {
@ -38,35 +39,40 @@ mixin _$PostStore on _PostStore, Store {
});
}
final _$saveAsyncAction = AsyncAction('_PostStore.save');
late final _$saveAsyncAction =
AsyncAction('_PostStore.save', context: context);
@override
Future<void> save(Jwt token) {
return _$saveAsyncAction.run(() => super.save(token));
}
final _$reportAsyncAction = AsyncAction('_PostStore.report');
late final _$reportAsyncAction =
AsyncAction('_PostStore.report', context: context);
@override
Future<void> report(Jwt token, String reason) {
return _$reportAsyncAction.run(() => super.report(token, reason));
}
final _$blockUserAsyncAction = AsyncAction('_PostStore.blockUser');
late final _$blockUserAsyncAction =
AsyncAction('_PostStore.blockUser', context: context);
@override
Future<void> blockUser(Jwt token) {
return _$blockUserAsyncAction.run(() => super.blockUser(token));
}
final _$_voteAsyncAction = AsyncAction('_PostStore._vote');
late final _$_voteAsyncAction =
AsyncAction('_PostStore._vote', context: context);
@override
Future<void> _vote(Jwt token, VoteType voteType) {
return _$_voteAsyncAction.run(() => super._vote(token, voteType));
}
final _$_PostStoreActionController = ActionController(name: '_PostStore');
late final _$_PostStoreActionController =
ActionController(name: '_PostStore', context: context);
@override
void updatePostView(PostView postView) {

View File

@ -21,7 +21,7 @@ packages:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.11"
version: "3.3.0"
args:
dependency: transitive
description:
@ -49,7 +49,7 @@ packages:
name: build
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
version: "2.3.0"
build_config:
dependency: transitive
description:
@ -63,7 +63,7 @@ packages:
name: build_daemon
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.1.0"
build_resolvers:
dependency: transitive
description:
@ -77,7 +77,7 @@ packages:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.7"
version: "2.1.10"
build_runner_core:
dependency: transitive
description:
@ -98,7 +98,7 @@ packages:
name: built_value
url: "https://pub.dartlang.org"
source: hosted
version: "8.1.4"
version: "8.2.3"
characters:
dependency: transitive
description:
@ -168,7 +168,7 @@ packages:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
dart_style:
dependency: transitive
description:
@ -182,14 +182,14 @@ packages:
name: extended_image
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.1"
version: "6.0.3"
extended_image_library:
dependency: transitive
description:
name: extended_image_library
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.2"
version: "3.1.4"
fake_async:
dependency: transitive
description:
@ -236,14 +236,14 @@ packages:
name: flutter_hooks
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.2"
version: "0.18.3"
flutter_keyboard_visibility:
dependency: transitive
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.1"
version: "5.2.0"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
@ -276,14 +276,14 @@ packages:
name: flutter_markdown
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.9"
version: "0.6.10"
flutter_mobx:
dependency: "direct main"
description:
name: flutter_mobx
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "2.0.5"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
@ -297,7 +297,7 @@ packages:
name: flutter_speed_dial
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0+1"
version: "6.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -309,7 +309,7 @@ packages:
name: flutter_typeahead
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.4"
version: "3.2.5"
flutter_web_plugins:
dependency: transitive
description: flutter
@ -321,14 +321,14 @@ packages:
name: freezed
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
version: "2.0.2"
freezed_annotation:
dependency: "direct main"
description:
name: freezed_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "2.0.1"
frontend_server_client:
dependency: transitive
description:
@ -377,7 +377,7 @@ packages:
name: http_multi_server
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.2.0"
http_parser:
dependency: transitive
description:
@ -391,28 +391,42 @@ packages:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.1"
version: "3.1.3"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.4+6"
version: "0.8.5"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.4+11"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.5"
version: "2.1.6"
image_picker_ios:
dependency: transitive
description:
name: image_picker_ios
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.5"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.3"
version: "2.4.4"
intl:
dependency: "direct main"
description:
@ -440,21 +454,21 @@ packages:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "4.5.0"
json_serializable:
dependency: "direct dev"
description:
name: json_serializable
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.4"
version: "6.2.0"
keyboard_dismisser:
dependency: "direct main"
description:
name: keyboard_dismisser
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
latinize:
dependency: transitive
description:
@ -468,7 +482,7 @@ packages:
name: lemmy_api_client
url: "https://pub.dartlang.org"
source: hosted
version: "0.19.0"
version: "0.20.0"
logging:
dependency: "direct main"
description:
@ -482,7 +496,7 @@ packages:
name: markdown
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
version: "5.0.0"
matcher:
dependency: transitive
description:
@ -524,21 +538,21 @@ packages:
name: mobx
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6+1"
version: "2.0.7"
mobx_codegen:
dependency: "direct dev"
description:
name: mobx_codegen
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5+2"
version: "2.0.6"
modal_bottom_sheet:
dependency: "direct main"
description:
name: modal_bottom_sheet
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
nested:
dependency: "direct main"
description:
@ -559,14 +573,14 @@ packages:
name: package_info_plus
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.4.2"
package_info_plus_linux:
dependency: transitive
description:
name: package_info_plus_linux
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
version: "1.0.5"
package_info_plus_macos:
dependency: transitive
description:
@ -587,14 +601,14 @@ packages:
name: package_info_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "1.0.5"
package_info_plus_windows:
dependency: transitive
description:
name: package_info_plus_windows
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "1.0.5"
path:
dependency: transitive
description:
@ -608,21 +622,21 @@ packages:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
version: "2.0.9"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
version: "2.0.13"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
version: "2.0.8"
path_provider_linux:
dependency: transitive
description:
@ -651,13 +665,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.11.1"
petitparser:
dependency: transitive
description:
@ -713,7 +720,7 @@ packages:
name: pub_semver
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
pubspec_parse:
dependency: transitive
description:
@ -727,42 +734,42 @@ packages:
name: share_plus
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.4"
version: "4.0.4"
share_plus_linux:
dependency: transitive
description:
name: share_plus_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "3.0.0"
share_plus_macos:
dependency: transitive
description:
name: share_plus_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "3.0.0"
share_plus_platform_interface:
dependency: transitive
description:
name: share_plus_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "3.0.2"
share_plus_web:
dependency: transitive
description:
name: share_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "3.0.0"
share_plus_windows:
dependency: transitive
description:
name: share_plus_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "3.0.0"
shared_preferences:
dependency: "direct main"
description:
@ -776,28 +783,28 @@ packages:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.10"
version: "2.0.11"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.1.0"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "2.1.0"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.3"
shared_preferences_platform_interface:
dependency: transitive
description:
@ -818,14 +825,14 @@ packages:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "2.1.0"
shelf:
dependency: transitive
description:
name: shelf
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.3.0"
shelf_web_socket:
dependency: transitive
description:
@ -844,14 +851,14 @@ packages:
name: source_gen
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
version: "1.2.2"
source_helper:
dependency: transitive
description:
name: source_helper
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
version: "1.3.2"
source_span:
dependency: transitive
description:
@ -907,7 +914,7 @@ packages:
name: timeago
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.1"
version: "3.2.2"
timing:
dependency: transitive
description:
@ -928,35 +935,35 @@ packages:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.18"
version: "6.1.0"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.14"
version: "6.0.16"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.14"
version: "6.0.15"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "3.0.0"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "3.0.0"
url_launcher_platform_interface:
dependency: transitive
description:
@ -970,14 +977,14 @@ packages:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
version: "2.0.9"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "3.0.0"
vector_math:
dependency: transitive
description:
@ -1005,14 +1012,14 @@ packages:
name: web_socket_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.2.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.10"
version: "2.5.2"
xdg_directories:
dependency: transitive
description:

View File

@ -23,15 +23,15 @@ environment:
dependencies:
# widgets
flutter_speed_dial: ^5.0.0
flutter_speed_dial: ^6.0.0
photo_view: ^0.13.0
markdown: ^4.0.0
markdown: ^5.0.0
flutter_markdown: ^0.6.1
flutter_typeahead: ^3.2.1
modal_bottom_sheet: ^2.0.0
# native
share_plus: ^3.0.4
share_plus: ^4.0.4
url_launcher: ^6.0.3
shared_preferences: ^2.0.5
package_info_plus: ^1.0.6
@ -47,12 +47,12 @@ dependencies:
# utils
timeago: ^3.0.2
fuzzy: ^0.4.0-nullsafety.0
lemmy_api_client: ^0.19.0
lemmy_api_client: ^0.20.0
intl: ^0.17.0
matrix4_transform: ^2.0.0
json_annotation: ^4.4.0
json_annotation: ^4.5.0
keyboard_dismisser: ^2.0.0
freezed_annotation: ^1.0.0
freezed_annotation: ^2.0.1
logging: ^1.0.1
nested: ^1.0.0
@ -70,7 +70,7 @@ dev_dependencies:
json_serializable: ^6.0.0
build_runner: ^2.1.2
mobx_codegen: ^2.0.2
freezed: ^1.0.0
freezed: ^2.0.2
flutter_icons:
android: true