Merge branch 'mastodon-reader' into 'main'

Mastodon reader

See merge request mysocialportal/fediverse-archiving-tools!8
This commit is contained in:
HankG 2022-11-11 04:23:45 +00:00
commit 4362d16ffc
23 changed files with 774 additions and 116 deletions

View file

@ -9,7 +9,7 @@ import 'marker_data.dart';
extension GeoSpatialPostExtensions on TimelineEntry { extension GeoSpatialPostExtensions on TimelineEntry {
MarkerData toMarkerData(MapTransformer transformer, Color color) { MarkerData toMarkerData(MapTransformer transformer, Color color) {
final latLon = LatLng(locationData.latitude, locationData.longitude); final latLon = LatLng(locationData.latitude, locationData.longitude);
final offset = transformer.fromLatLngToXYCoords(latLon); final offset = transformer.toOffset(latLon);
return MarkerData(this, offset, color); return MarkerData(this, offset, color);
} }
} }

View file

@ -20,9 +20,9 @@ class MapBounds {
static MapBounds computed(MapTransformer transformer) { static MapBounds computed(MapTransformer transformer) {
final mapSize = transformer.constraints.biggest; final mapSize = transformer.constraints.biggest;
final upperLeft = transformer.fromXYCoordsToLatLng(Offset.zero); final upperLeft = transformer.toLatLng(Offset.zero);
final lowerRight = final lowerRight =
transformer.fromXYCoordsToLatLng(Offset(mapSize.width, mapSize.height)); transformer.toLatLng(Offset(mapSize.width, mapSize.height));
final idealLeftLongitude = max(-180.0, upperLeft.longitude); final idealLeftLongitude = max(-180.0, upperLeft.longitude);
final idealRightLongitude = min(180.0, lowerRight.longitude); final idealRightLongitude = min(180.0, lowerRight.longitude);
final idealUpperLatitude = min(85.0, upperLeft.latitude); final idealUpperLatitude = min(85.0, upperLeft.latitude);

View file

@ -25,10 +25,6 @@ class TreeEntryCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (Scrollable.recommendDeferredLoadingForContext(context)) {
return const SizedBox();
}
const double spacingHeight = 5.0; const double spacingHeight = 5.0;
final formatter = final formatter =
Provider.of<SettingsController>(context).dateTimeFormatter; Provider.of<SettingsController>(context).dateTimeFormatter;

View file

@ -88,25 +88,13 @@ class _HomeState extends State<Home> {
} }
Widget _buildNavBar() { Widget _buildNavBar() {
return LayoutBuilder(builder: (context, constraint) { return NavigationRail(
return Scrollbar(
isAlwaysShown: true,
child: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraint.maxHeight),
child: IntrinsicHeight(
child: NavigationRail(
destinations: destinations:
_pageData.map((p) => p.navRailDestination).toList(), _pageData.map((p) => p.navRailDestination).toList(),
selectedIndex: _selectedIndex, selectedIndex: _selectedIndex,
onDestinationSelected: _setSelectedIndex, onDestinationSelected: _setSelectedIndex,
labelType: NavigationRailLabelType.all, labelType: NavigationRailLabelType.all,
),
),
),
),
); );
});
} }
Widget _buildMainArea() { Widget _buildMainArea() {

View file

@ -0,0 +1,23 @@
import '../../models/media_attachment.dart';
MediaAttachment mediaAttachmentfromMastodonJson(Map<String, dynamic> json) {
final uri = Uri.parse(json['url']);
const creationTimestamp = 0;
final explicitType = (json['mediaType'] ?? '').startsWith('image')
? AttachmentMediaType.image
: (json['mimetype'] ?? '').startsWith('video')
? AttachmentMediaType.video
: AttachmentMediaType.unknown;
final thumbnailUri = Uri();
final title = json['name'] ?? '';
final description = json['blurhash'] ?? '';
return MediaAttachment(
uri: uri,
creationTimestamp: creationTimestamp,
metadata: {},
thumbnailUri: thumbnailUri,
title: title,
explicitType: explicitType,
description: description);
}

View file

@ -0,0 +1,53 @@
import 'package:fediverse_archive_browser/src/mastodon/serializers/mastodon_media_attachment_serializer.dart';
import 'package:logging/logging.dart';
import '../../models/location_data.dart';
import '../../models/timeline_entry.dart';
import '../../utils/offsetdatetime_utils.dart';
final _logger = Logger('timelineEntryFromMastodonJson');
TimelineEntry timelineEntryFromMastodonJson(Map<String, dynamic> json) {
final int timestamp = json.containsKey('published')
? OffsetDateTimeUtils.epochSecTimeFromTimeZoneString(json['published'])
.fold(
onSuccess: (value) => value,
onError: (error) {
_logger.severe("Couldn't read date time string: $error");
return 0;
})
: 0;
final id = json['id'] ?? '';
final isReshare = json.containsKey('reblogged');
final parentId = json['inReplyTo'] ?? '';
final parentAuthor = json['in_reply_to_account_id'] ?? '';
final parentAuthorId = json['in_reply_to_account_id'] ?? '';
final body = json['content'] ?? '';
final author = json['attributedTo'] ?? '';
final authorId = json['attributedTo'] ?? '';
const title = '';
final externalLink = json['url'] ?? '';
final actualLocationData = LocationData();
final modificationTimestamp = timestamp;
final backdatedTimestamp = timestamp;
final mediaAttachments = (json['attachment'] as List<dynamic>? ?? [])
.map((json) => mediaAttachmentfromMastodonJson(json))
.toList();
return TimelineEntry(
creationTimestamp: timestamp,
modificationTimestamp: modificationTimestamp,
backdatedTimestamp: backdatedTimestamp,
locationData: actualLocationData,
body: body,
isReshare: isReshare,
id: id,
parentId: parentId,
parentAuthorId: parentAuthorId,
externalLink: externalLink,
author: author,
authorId: authorId,
parentAuthor: parentAuthor,
title: title,
links: [],
mediaAttachments: mediaAttachments,
);
}

View file

@ -0,0 +1,145 @@
import 'dart:convert';
import 'dart:io';
import 'package:path/path.dart' as p;
import 'package:result_monad/result_monad.dart';
import '../../models/entry_tree_item.dart';
import '../../models/local_image_archive_entry.dart';
import '../../services/archive_service_interface.dart';
import '../../services/connections_manager.dart';
import '../../utils/exec_error.dart';
import '../serializers/mastodon_timeline_entry_serializer.dart';
import 'mastodon_path_mapping_service.dart';
class MastodonArchiveService implements ArchiveService {
@override
final MastodonPathMappingService pathMappingService;
final Map<String, ImageEntry> _imagesByRequestUrl = {};
final List<EntryTreeItem> _postEntries = [];
final List<EntryTreeItem> _orphanedCommentEntries = [];
final List<EntryTreeItem> _allComments = [];
@override
final ConnectionsManager connectionsManager = ConnectionsManager();
MastodonArchiveService({required this.pathMappingService});
@override
// TODO: implement ownersName
String get ownersName => throw UnimplementedError();
@override
void clearCaches() {
connectionsManager.clearCaches();
_imagesByRequestUrl.clear();
_orphanedCommentEntries.clear();
_allComments.clear();
_postEntries.clear();
}
@override
FutureResult<List<EntryTreeItem>, ExecError> getPosts() async {
if (_postEntries.isEmpty && _allComments.isEmpty) {
_loadEntries();
}
return Result.ok(_postEntries);
}
@override
FutureResult<List<EntryTreeItem>, ExecError> getAllComments() async {
if (_postEntries.isEmpty && _allComments.isEmpty) {
_loadEntries();
}
return Result.ok(_allComments);
}
@override
FutureResult<List<EntryTreeItem>, ExecError> getOrphanedComments() async {
if (_postEntries.isEmpty && _allComments.isEmpty) {
_loadEntries();
}
return Result.ok(_orphanedCommentEntries);
}
@override
Result<ImageEntry, ExecError> getImageByUrl(String url) {
if (_imagesByRequestUrl.isEmpty) {
_loadImages();
}
final result = _imagesByRequestUrl[url];
return result == null
? Result.error(ExecError(errorMessage: '$url not found'))
: Result.ok(result);
}
String get _baseArchiveFolder => pathMappingService.rootFolder;
void _loadEntries() {
final entriesJsonPath = p.join(_baseArchiveFolder, 'outbox.json');
final jsonFile = File(entriesJsonPath);
try {
if (jsonFile.existsSync()) {
final jsonText = jsonFile.readAsStringSync();
final json = jsonDecode(jsonText) as Map<String, dynamic>;
final entriesJson = json['orderedItems'] as List<dynamic>;
final entries = entriesJson
.where((e) => 'Create' == e['type'])
.map((e) => e['object'])
.map((e) => timelineEntryFromMastodonJson(e))
.toList();
final topLevelEntries =
entries.where((element) => element.parentId.isEmpty);
final commentEntries =
entries.where((element) => element.parentId.isNotEmpty).toList();
final entryTrees = <String, EntryTreeItem>{};
final postTreeEntries = <EntryTreeItem>[];
for (final entry in topLevelEntries) {
final treeEntry = EntryTreeItem(entry, false);
entryTrees[entry.id] = treeEntry;
postTreeEntries.add(treeEntry);
}
final commentTreeEntries = <EntryTreeItem>[];
commentEntries.sort(
(c1, c2) => c1.creationTimestamp.compareTo(c2.creationTimestamp));
for (final entry in commentEntries) {
final parent = entryTrees[entry.parentId];
final treeEntry = EntryTreeItem(entry, parent == null);
parent?.addChild(treeEntry);
entryTrees[entry.id] = treeEntry;
commentTreeEntries.add(treeEntry);
}
_postEntries.clear();
_postEntries.addAll(postTreeEntries);
_allComments.clear();
_allComments.addAll(commentTreeEntries);
_orphanedCommentEntries.clear();
_orphanedCommentEntries
.addAll(entryTrees.values.where((element) => element.isOrphaned));
}
} catch (e) {
print(e);
}
}
void _loadImages() {
final imageJsonPath = p.join(_baseArchiveFolder, 'images.json');
final jsonFile = File(imageJsonPath);
if (jsonFile.existsSync()) {
final json = jsonDecode(jsonFile.readAsStringSync()) as List<dynamic>;
final imageEntries = json.map((j) => ImageEntry.fromJson(j));
for (final entry in imageEntries) {
_imagesByRequestUrl[entry.url] = entry;
}
}
}
}

View file

@ -0,0 +1,73 @@
import 'dart:io';
import 'package:fediverse_archive_browser/src/settings/settings_controller.dart';
import 'package:logging/logging.dart';
import 'package:path/path.dart' as p;
import '../../services/path_mapper_service_interface.dart';
class MastodonPathMappingService implements PathMappingService {
static final _logger = Logger('$MastodonPathMappingService');
final SettingsController settings;
final _archiveDirectories = <FileSystemEntity>[];
MastodonPathMappingService(this.settings) {
refresh();
}
String get rootFolder => settings.rootFolder;
List<FileSystemEntity> get archiveDirectories =>
List.unmodifiable(_archiveDirectories);
void refresh() {
_logger.fine('Refreshing path mapping service directory data.');
if (!Directory(settings.rootFolder).existsSync()) {
_logger.severe(
"Base directory does not exist! can't do mapping of ${settings.rootFolder}");
return;
}
_archiveDirectories.clear();
final recursive = !_calcRootIsSingleArchiveFolder();
_archiveDirectories.addAll(Directory(settings.rootFolder)
.listSync(recursive: recursive)
.where((element) =>
element.statSync().type == FileSystemEntityType.directory &&
p.basename(element.path) == 'media_attachments')
.map((d) => d.parent));
}
String toFullPath(String relPath) {
for (final file in _archiveDirectories) {
final fullPath =
p.join(file.path, relPath[0] == '/' ? relPath.substring(1) : relPath);
if (File(fullPath).existsSync()) {
return fullPath;
}
}
_logger.fine(
'Did not find a file with this relPath anywhere therefore returning the relPath');
return relPath;
}
bool _calcRootIsSingleArchiveFolder() {
for (final entity in Directory(rootFolder).listSync(recursive: false)) {
if (_knownRootFilesAndFolders.contains(entity.uri.pathSegments
.where((element) => element.isNotEmpty)
.last)) {
return true;
}
}
return false;
}
static final _knownRootFilesAndFolders = [
'media_attachments',
'actor.json',
'likes.json',
'outbox.json',
];
}

View file

@ -2,4 +2,5 @@ enum ArchiveType {
unknown, unknown,
diaspora, diaspora,
friendica, friendica,
mastodon,
} }

View file

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:fediverse_archive_browser/src/components/filter_control_component.dart'; import 'package:fediverse_archive_browser/src/components/filter_control_component.dart';
import 'package:fediverse_archive_browser/src/components/tree_entry_card.dart'; import 'package:fediverse_archive_browser/src/components/tree_entry_card.dart';
import 'package:fediverse_archive_browser/src/models/entry_tree_item.dart'; import 'package:fediverse_archive_browser/src/models/entry_tree_item.dart';
@ -6,6 +5,7 @@ import 'package:fediverse_archive_browser/src/models/model_utils.dart';
import 'package:fediverse_archive_browser/src/screens/error_screen.dart'; import 'package:fediverse_archive_browser/src/screens/error_screen.dart';
import 'package:fediverse_archive_browser/src/settings/settings_controller.dart'; import 'package:fediverse_archive_browser/src/settings/settings_controller.dart';
import 'package:fediverse_archive_browser/src/utils/exec_error.dart'; import 'package:fediverse_archive_browser/src/utils/exec_error.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:result_monad/result_monad.dart'; import 'package:result_monad/result_monad.dart';

View file

@ -1,7 +1,5 @@
import 'dart:math'; import 'dart:math';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:fediverse_archive_browser/src/components/geo/geo_extensions.dart'; import 'package:fediverse_archive_browser/src/components/geo/geo_extensions.dart';
import 'package:fediverse_archive_browser/src/components/tree_entry_card.dart'; import 'package:fediverse_archive_browser/src/components/tree_entry_card.dart';
import 'package:fediverse_archive_browser/src/friendica/services/friendica_path_mapping_service.dart'; import 'package:fediverse_archive_browser/src/friendica/services/friendica_path_mapping_service.dart';
@ -14,6 +12,8 @@ import 'package:fediverse_archive_browser/src/services/archive_service_provider.
import 'package:fediverse_archive_browser/src/settings/settings_controller.dart'; import 'package:fediverse_archive_browser/src/settings/settings_controller.dart';
import 'package:fediverse_archive_browser/src/utils/exec_error.dart'; import 'package:fediverse_archive_browser/src/utils/exec_error.dart';
import 'package:fediverse_archive_browser/src/utils/temp_file_builder.dart'; import 'package:fediverse_archive_browser/src/utils/temp_file_builder.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:latlng/latlng.dart'; import 'package:latlng/latlng.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -191,7 +191,7 @@ class _GeospatialViewState extends State<GeospatialView> {
postList, postList,
], ],
initialWeights: const [0.3], initialWeights: const [0.3],
minimalWeight: 0.2, globalMinimalWeight: 0.2,
); );
return MultiSplitViewTheme( return MultiSplitViewTheme(

View file

@ -1,12 +1,14 @@
import 'package:flutter/cupertino.dart';
import 'package:fediverse_archive_browser/src/diaspora/services/diaspora_archive_service.dart'; import 'package:fediverse_archive_browser/src/diaspora/services/diaspora_archive_service.dart';
import 'package:fediverse_archive_browser/src/diaspora/services/diaspora_path_mapping_service.dart'; import 'package:fediverse_archive_browser/src/diaspora/services/diaspora_path_mapping_service.dart';
import 'package:fediverse_archive_browser/src/friendica/services/friendica_archive_service.dart'; import 'package:fediverse_archive_browser/src/friendica/services/friendica_archive_service.dart';
import 'package:fediverse_archive_browser/src/friendica/services/friendica_path_mapping_service.dart'; import 'package:fediverse_archive_browser/src/friendica/services/friendica_path_mapping_service.dart';
import 'package:fediverse_archive_browser/src/mastodon/services/mastodon_archive_service.dart';
import 'package:fediverse_archive_browser/src/mastodon/services/mastodon_path_mapping_service.dart';
import 'package:fediverse_archive_browser/src/services/archive_service_interface.dart'; import 'package:fediverse_archive_browser/src/services/archive_service_interface.dart';
import 'package:fediverse_archive_browser/src/services/connections_manager.dart'; import 'package:fediverse_archive_browser/src/services/connections_manager.dart';
import 'package:fediverse_archive_browser/src/services/path_mapper_service_interface.dart'; import 'package:fediverse_archive_browser/src/services/path_mapper_service_interface.dart';
import 'package:fediverse_archive_browser/src/settings/settings_controller.dart'; import 'package:fediverse_archive_browser/src/settings/settings_controller.dart';
import 'package:flutter/cupertino.dart';
import 'package:result_monad/result_monad.dart'; import 'package:result_monad/result_monad.dart';
import '../models/archive_types_enum.dart'; import '../models/archive_types_enum.dart';
@ -18,6 +20,7 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
final SettingsController settings; final SettingsController settings;
late DiasporaArchiveService _diasporaArchiveService; late DiasporaArchiveService _diasporaArchiveService;
late FriendicaArchiveService _friendicaArchiveService; late FriendicaArchiveService _friendicaArchiveService;
late MastodonArchiveService _mastodonArchiveService;
@override @override
ConnectionsManager get connectionsManager => ConnectionsManager get connectionsManager =>
@ -32,6 +35,7 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
void clearCaches() { void clearCaches() {
_friendicaArchiveService.clearCaches(); _friendicaArchiveService.clearCaches();
_diasporaArchiveService.clearCaches(); _diasporaArchiveService.clearCaches();
_mastodonArchiveService.clearCaches();
_buildArchiveServices(); _buildArchiveServices();
} }
@ -61,17 +65,19 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
return _diasporaArchiveService; return _diasporaArchiveService;
case ArchiveType.friendica: case ArchiveType.friendica:
return _friendicaArchiveService; return _friendicaArchiveService;
case ArchiveType.mastodon:
return _mastodonArchiveService;
default: default:
throw Exception('Unknown archive type'); throw Exception('Unknown archive type');
} }
} }
void _buildArchiveServices() { void _buildArchiveServices() {
_diasporaArchiveService = DiasporaArchiveService( _diasporaArchiveService = DiasporaArchiveService(
pathMappingService: DiasporaPathMappingService(settings)); pathMappingService: DiasporaPathMappingService(settings));
_friendicaArchiveService = FriendicaArchiveService( _friendicaArchiveService = FriendicaArchiveService(
pathMappingService: FriendicaPathMappingService(settings)); pathMappingService: FriendicaPathMappingService(settings));
_mastodonArchiveService = MastodonArchiveService(
pathMappingService: MastodonPathMappingService(settings));
} }
} }

View file

@ -7,5 +7,6 @@ class AppScrollingBehavior extends MaterialScrollBehavior {
Set<PointerDeviceKind> get dragDevices => { Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch, PointerDeviceKind.touch,
PointerDeviceKind.mouse, PointerDeviceKind.mouse,
PointerDeviceKind.trackpad,
}; };
} }

View file

@ -7,6 +7,9 @@ list(APPEND FLUTTER_PLUGIN_LIST
url_launcher_linux url_launcher_linux
) )
list(APPEND FLUTTER_FFI_PLUGIN_LIST
)
set(PLUGIN_BUNDLED_LIBRARIES) set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST}) foreach(plugin ${FLUTTER_PLUGIN_LIST})
@ -15,3 +18,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>) list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin) endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)

View file

@ -5,14 +5,22 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import audio_session
import desktop_window import desktop_window
import just_audio
import path_provider_macos import path_provider_macos
import shared_preferences_macos import shared_preferences_macos
import sqflite
import url_launcher_macos import url_launcher_macos
import wakelock_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
WakelockMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockMacosPlugin"))
} }

View file

@ -1,4 +1,4 @@
platform :osx, '10.11' platform :osx, '10.13'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View file

@ -1,40 +1,73 @@
PODS: PODS:
- audio_session (0.0.1):
- FlutterMacOS
- desktop_window (0.0.1): - desktop_window (0.0.1):
- FlutterMacOS - FlutterMacOS
- FlutterMacOS (1.0.0) - FlutterMacOS (1.0.0)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- just_audio (0.0.1):
- FlutterMacOS
- path_provider_macos (0.0.1): - path_provider_macos (0.0.1):
- FlutterMacOS - FlutterMacOS
- shared_preferences_macos (0.0.1): - shared_preferences_macos (0.0.1):
- FlutterMacOS - FlutterMacOS
- sqflite (0.0.2):
- FlutterMacOS
- FMDB (>= 2.7.5)
- url_launcher_macos (0.0.1): - url_launcher_macos (0.0.1):
- FlutterMacOS - FlutterMacOS
- wakelock_macos (0.0.1):
- FlutterMacOS
DEPENDENCIES: DEPENDENCIES:
- audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`)
- desktop_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_window/macos`) - desktop_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_window/macos`)
- FlutterMacOS (from `Flutter/ephemeral`) - FlutterMacOS (from `Flutter/ephemeral`)
- just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`)
- path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
- shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`) - shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`)
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
- wakelock_macos (from `Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos`)
SPEC REPOS:
trunk:
- FMDB
EXTERNAL SOURCES: EXTERNAL SOURCES:
audio_session:
:path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos
desktop_window: desktop_window:
:path: Flutter/ephemeral/.symlinks/plugins/desktop_window/macos :path: Flutter/ephemeral/.symlinks/plugins/desktop_window/macos
FlutterMacOS: FlutterMacOS:
:path: Flutter/ephemeral :path: Flutter/ephemeral
just_audio:
:path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos
path_provider_macos: path_provider_macos:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos
shared_preferences_macos: shared_preferences_macos:
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos
sqflite:
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
url_launcher_macos: url_launcher_macos:
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
wakelock_macos:
:path: Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos
SPEC CHECKSUMS: SPEC CHECKSUMS:
audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72
desktop_window: fb7c4f12c1129f947ac482296b6f14059d57a3c3 desktop_window: fb7c4f12c1129f947ac482296b6f14059d57a3c3
FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 FlutterMacOS: ae6af50a8ea7d6103d888583d46bd8328a7e9811
path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
shared_preferences_macos: 480ce071d0666e37cef23fe6c702293a3d21799e just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489
url_launcher_macos: 45af3d61de06997666568a7149c1be98b41c95d4 path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19
shared_preferences_macos: a64dc611287ed6cbe28fd1297898db1336975727
sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
url_launcher_macos: 597e05b8e514239626bcf4a850fcf9ef5c856ec3
wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9
PODFILE CHECKSUM: 6eac6b3292e5142cfc23bdeb71848a40ec51c14c PODFILE CHECKSUM: a884f6dd3f7494f3892ee6c81feea3a3abbf9153
COCOAPODS: 1.10.2 COCOAPODS: 1.11.3

View file

@ -405,7 +405,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;
@ -486,7 +486,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx; SDKROOT = macosx;
@ -533,7 +533,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;

View file

@ -7,14 +7,21 @@ packages:
name: args name: args
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.0" version: "2.3.1"
async: async:
dependency: transitive dependency: transitive
description: description:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.8.2" version: "2.9.0"
audio_session:
dependency: transitive
description:
name: audio_session
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.10"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -22,13 +29,34 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
cached_network_image:
dependency: transitive
description:
name: cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.2"
cached_network_image_platform_interface:
dependency: transitive
description:
name: cached_network_image_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
cached_network_image_web:
dependency: transitive
description:
name: cached_network_image_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0" version: "1.2.1"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
@ -50,34 +78,48 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.0" version: "0.12.0"
chewie:
dependency: transitive
description:
name: chewie
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.5"
clock: clock:
dependency: transitive dependency: transitive
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.1.1"
collection: collection:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0" version: "1.16.0"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
name: crypto name: crypto
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
csslib: csslib:
dependency: transitive dependency: transitive
description: description:
name: csslib name: csslib
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.17.1" version: "0.17.2"
cupertino_icons:
dependency: transitive
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
desktop_window: desktop_window:
dependency: "direct main" dependency: "direct main"
description: description:
@ -91,33 +133,54 @@ packages:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0" version: "1.3.1"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
name: ffi name: ffi
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.2" version: "1.2.1"
file: file:
dependency: transitive dependency: transitive
description: description:
name: file name: file
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.1.2" version: "6.1.4"
file_picker: file_picker:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.7" version: "4.6.1"
fixnum:
dependency: transitive
description:
name: fixnum
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_blurhash:
dependency: transitive
description:
name: flutter_blurhash
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.0"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -136,7 +199,14 @@ packages:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.0.7"
flutter_svg:
dependency: transitive
description:
name: flutter_svg
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.6"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -147,41 +217,90 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_widget_from_html_core: flutter_widget_from_html:
dependency: "direct main" dependency: "direct main"
description:
name: flutter_widget_from_html
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.0"
flutter_widget_from_html_core:
dependency: transitive
description: description:
name: flutter_widget_from_html_core name: flutter_widget_from_html_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.4" version: "0.9.0"
fwfh_cached_network_image:
dependency: transitive
description:
name: fwfh_cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.0+3"
fwfh_chewie:
dependency: transitive
description:
name: fwfh_chewie
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.0+2"
fwfh_just_audio:
dependency: transitive
description:
name: fwfh_just_audio
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.0"
fwfh_svg:
dependency: transitive
description:
name: fwfh_svg
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.2+1"
fwfh_text_style: fwfh_text_style:
dependency: transitive dependency: transitive
description: description:
name: fwfh_text_style name: fwfh_text_style
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.7.2" version: "2.22.08+1"
fwfh_url_launcher:
dependency: transitive
description:
name: fwfh_url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.0"
fwfh_webview:
dependency: transitive
description:
name: fwfh_webview
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.2+4"
html: html:
dependency: transitive dependency: transitive
description: description:
name: html name: html
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.15.0" version: "0.15.1"
http: http:
dependency: transitive dependency: transitive
description: description:
name: http name: http
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.13.4" version: "0.13.5"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.0" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -195,14 +314,35 @@ packages:
name: js name: js
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.3" version: "0.6.4"
just_audio:
dependency: transitive
description:
name: just_audio
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.30"
just_audio_platform_interface:
dependency: transitive
description:
name: just_audio_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.0"
just_audio_web:
dependency: transitive
description:
name: just_audio_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.7"
latlng: latlng:
dependency: "direct main" dependency: "direct main"
description: description:
name: latlng name: latlng
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.0" version: "0.1.1"
lints: lints:
dependency: transitive dependency: transitive
description: description:
@ -216,14 +356,14 @@ packages:
name: logging name: logging
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.1.0"
map: map:
dependency: "direct main" dependency: "direct main"
description: description:
name: map name: map
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.2.0"
markdown: markdown:
dependency: "direct main" dependency: "direct main"
description: description:
@ -237,21 +377,21 @@ packages:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.11" version: "0.12.12"
material_color_utilities: material_color_utilities:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.3" version: "0.1.5"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.7.0" version: "1.8.0"
metadata_fetch: metadata_fetch:
dependency: "direct main" dependency: "direct main"
description: description:
@ -265,7 +405,7 @@ packages:
name: multi_split_view name: multi_split_view
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.10.0+1" version: "1.13.0"
nested: nested:
dependency: transitive dependency: transitive
description: description:
@ -279,63 +419,98 @@ packages:
name: network_to_file_image name: network_to_file_image
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.3" version: "3.1.0"
octo_image:
dependency: transitive
description:
name: octo_image
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
path: path:
dependency: "direct main" dependency: "direct main"
description: description:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.2"
path_drawing:
dependency: transitive
description:
name: path_drawing
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
path_parsing:
dependency: transitive
description:
name: path_parsing
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
path_provider: path_provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.8" version: "2.0.11"
path_provider_android: path_provider_android:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.9" version: "2.0.21"
path_provider_ios: path_provider_ios:
dependency: transitive dependency: transitive
description: description:
name: path_provider_ios name: path_provider_ios
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.7" version: "2.0.11"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
name: path_provider_linux name: path_provider_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.2" version: "2.1.7"
path_provider_macos: path_provider_macos:
dependency: transitive dependency: transitive
description: description:
name: path_provider_macos name: path_provider_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.4" version: "2.0.6"
path_provider_platform_interface: path_provider_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: path_provider_platform_interface name: path_provider_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.5"
path_provider_windows: path_provider_windows:
dependency: transitive dependency: transitive
description: description:
name: path_provider_windows name: path_provider_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.4" version: "2.0.7"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.11.1"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
platform: platform:
dependency: transitive dependency: transitive
description: description:
@ -349,7 +524,7 @@ packages:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.1.3"
process: process:
dependency: transitive dependency: transitive
description: description:
@ -357,20 +532,34 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.4" version: "4.2.4"
protobuf:
dependency: transitive
description:
name: protobuf
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.1" version: "6.0.4"
result_monad: result_monad:
dependency: "direct main" dependency: "direct main"
description: description:
name: result_monad name: result_monad
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "2.0.2"
rxdart:
dependency: transitive
description:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.27.5"
scrollable_positioned_list: scrollable_positioned_list:
dependency: "direct main" dependency: "direct main"
description: description:
@ -384,56 +573,56 @@ packages:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.10" version: "2.0.15"
shared_preferences_android: shared_preferences_android:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.9" version: "2.0.14"
shared_preferences_ios: shared_preferences_ios:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_ios name: shared_preferences_ios
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.8" version: "2.1.1"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_linux name: shared_preferences_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.1.1"
shared_preferences_macos: shared_preferences_macos:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_macos name: shared_preferences_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.0.4"
shared_preferences_platform_interface: shared_preferences_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_platform_interface name: shared_preferences_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.1.0"
shared_preferences_web: shared_preferences_web:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_web name: shared_preferences_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.0.4"
shared_preferences_windows: shared_preferences_windows:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_windows name: shared_preferences_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.1.1"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -445,7 +634,21 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.1" version: "1.9.0"
sqflite:
dependency: transitive
description:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0+3"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.0+2"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@ -466,7 +669,7 @@ packages:
name: string_scanner name: string_scanner
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.1.1"
string_validator: string_validator:
dependency: transitive dependency: transitive
description: description:
@ -474,26 +677,33 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.0" version: "0.3.0"
synchronized:
dependency: transitive
description:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0+3"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
name: term_glyph name: term_glyph
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0" version: "1.2.1"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.8" version: "0.4.12"
time_machine: time_machine:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: master ref: master
resolved-ref: "040de1a261df442538ed97f6de5895465d7ca4dd" resolved-ref: "246f3608b16d7fa36ee2155b3a21884b48c75b01"
url: "https://github.com/Dana-Ferguson/time_machine" url: "https://github.com/Dana-Ferguson/time_machine"
source: git source: git
version: "0.9.17" version: "0.9.17"
@ -503,91 +713,196 @@ packages:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0" version: "1.3.1"
url_launcher: url_launcher:
dependency: "direct main" dependency: "direct main"
description: description:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.17" version: "6.1.6"
url_launcher_android: url_launcher_android:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.13" version: "6.0.21"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_ios name: url_launcher_ios
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.13" version: "6.0.17"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "3.0.1"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "3.0.1"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.4" version: "2.1.1"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.0.13"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "3.0.1"
uuid: uuid:
dependency: "direct main" dependency: "direct main"
description: description:
name: uuid name: uuid
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.5" version: "3.0.6"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.1" version: "2.1.2"
video_player:
dependency: transitive
description:
name: video_player
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.7"
video_player_android:
dependency: transitive
description:
name: video_player_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.9"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.7"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.4"
video_player_web:
dependency: transitive
description:
name: video_player_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.12"
wakelock:
dependency: transitive
description:
name: wakelock
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.2"
wakelock_macos:
dependency: transitive
description:
name: wakelock_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
wakelock_platform_interface:
dependency: transitive
description:
name: wakelock_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.0"
wakelock_web:
dependency: transitive
description:
name: wakelock_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
wakelock_windows:
dependency: transitive
description:
name: wakelock_windows
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
webview_flutter:
dependency: transitive
description:
name: webview_flutter
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.4"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.10.4"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.5"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
url: "https://pub.dartlang.org"
source: hosted
version: "2.9.5"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.1" version: "2.6.1"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
name: xdg_directories name: xdg_directories
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.0" version: "0.2.0+2"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
sdks: sdks:
dart: ">=2.14.4 <3.0.0" dart: ">=2.18.2 <3.0.0"
flutter: ">=2.6.0-0" flutter: ">=3.3.0"

View file

@ -1,13 +1,13 @@
name: fediverse_archive_browser name: fediverse_archive_browser
description: An Archive Browser for various fediverse projects (Friendica, Diaspora) description: An Archive Browser for various fediverse projects (Friendica, Diaspora, Mastodon)
# Prevent accidental publishing to pub.dev. # Prevent accidental publishing to pub.dev.
publish_to: 'none' publish_to: 'none'
version: 1.0.0 version: 2.0.0
environment: environment:
sdk: ">=2.14.0 <3.0.0" sdk: '>=2.18.2 <3.0.0'
dependencies: dependencies:
desktop_window: ^0.4.0 desktop_window: ^0.4.0
@ -17,7 +17,7 @@ dependencies:
charts_flutter: ^0.12.0 charts_flutter: ^0.12.0
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
flutter_widget_from_html_core: ^0.8.4 flutter_widget_from_html: ^0.9.0
intl: ^0.17.0 intl: ^0.17.0
logging: ^1.0.2 logging: ^1.0.2
latlng: ^0.1.0 latlng: ^0.1.0
@ -28,7 +28,7 @@ dependencies:
path: ^1.8.0 path: ^1.8.0
path_provider: ^2.0.6 path_provider: ^2.0.6
provider: ^6.0.0 provider: ^6.0.0
result_monad: ^1.0.2 result_monad: ^2.0.2
scrollable_positioned_list: ^0.2.2 scrollable_positioned_list: ^0.2.2
shared_preferences: ^2.0.8 shared_preferences: ^2.0.8
time_machine: time_machine:

View file

@ -7,6 +7,9 @@ list(APPEND FLUTTER_PLUGIN_LIST
url_launcher_windows url_launcher_windows
) )
list(APPEND FLUTTER_FFI_PLUGIN_LIST
)
set(PLUGIN_BUNDLED_LIBRARIES) set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST}) foreach(plugin ${FLUTTER_PLUGIN_LIST})
@ -15,3 +18,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>) list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin) endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)

View file

@ -63,13 +63,13 @@ IDI_APP_ICON ICON "resources\\fediverse_archive_re
#ifdef FLUTTER_BUILD_NUMBER #ifdef FLUTTER_BUILD_NUMBER
#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER #define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER
#else #else
#define VERSION_AS_NUMBER 1,0,0 #define VERSION_AS_NUMBER 2,0,0
#endif #endif
#ifdef FLUTTER_BUILD_NAME #ifdef FLUTTER_BUILD_NAME
#define VERSION_AS_STRING #FLUTTER_BUILD_NAME #define VERSION_AS_STRING #FLUTTER_BUILD_NAME
#else #else
#define VERSION_AS_STRING "1.0.0" #define VERSION_AS_STRING "2.0.0"
#endif #endif
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO