kopia lustrzana https://gitlab.com/mysocialportal/relatica
Merge branch 'group_management' into 'main'
Group management See merge request mysocialportal/relatica!31codemagic-setup
commit
9b0aa68aa4
|
@ -6,6 +6,7 @@
|
|||
* The "copy text" action now copies the plain text not HTML version. So things like hashtags show up as "#hashtag"
|
||||
not
|
||||
the HTML code around it with the link reference etc.
|
||||
* Clicking on the "Home" button if you already are on that screen scrolls to the top.
|
||||
* Fixes
|
||||
* New Features
|
||||
|
||||
|
|
|
@ -120,6 +120,7 @@ wanted to lay out some expectations before getting into the small details
|
|||
* Nitter replacement of Twitter links
|
||||
* User configurable Server blocking
|
||||
* Server-side searching tied into profiles, posts, hashtags
|
||||
* Smarter hashtag and user account storage/searching
|
||||
* Being able to ignore/unignore users
|
||||
* Deleting images and entire galleries
|
||||
* Events
|
||||
|
@ -143,7 +144,6 @@ wanted to lay out some expectations before getting into the small details
|
|||
Comments for now (fixed on servers running Friendica 2023.03)
|
||||
* ALT text on images should not have any quotation marks as it breaks when federating over to
|
||||
Diaspora for the time being (fixed on servers running Friendica 2023.03)
|
||||
* Portrait videos overflow their boxes in the timeline
|
||||
* Blocked/ignored user's content is still returned by the API (Fixed in Friendica 2023.03)
|
||||
* Paging for some of the endpoints either isn't wired in yet or is not working as needed server
|
||||
side. That includes things like:
|
||||
|
|
|
@ -17,8 +17,13 @@ enum NavBarButtons {
|
|||
class AppBottomNavBar extends StatelessWidget {
|
||||
static final _logger = Logger('$AppBottomNavBar');
|
||||
final NavBarButtons currentButton;
|
||||
final Function()? onHomeButtonReclick;
|
||||
|
||||
const AppBottomNavBar({super.key, required this.currentButton});
|
||||
const AppBottomNavBar({
|
||||
super.key,
|
||||
required this.currentButton,
|
||||
this.onHomeButtonReclick,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -36,6 +41,10 @@ class AppBottomNavBar extends StatelessWidget {
|
|||
onTap: (index) {
|
||||
final newButton = _indexToButton(index);
|
||||
if (newButton == currentButton) {
|
||||
if (newButton == NavBarButtons.timelines &&
|
||||
onHomeButtonReclick != null) {
|
||||
onHomeButtonReclick!();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||
|
||||
import '../../models/TimelineIdentifiers.dart';
|
||||
import '../../services/timeline_manager.dart';
|
||||
|
@ -10,8 +11,9 @@ import 'post_control.dart';
|
|||
class TimelinePanel extends StatelessWidget {
|
||||
static final _logger = Logger('$TimelinePanel');
|
||||
final TimelineIdentifiers timeline;
|
||||
final controller = ItemScrollController();
|
||||
|
||||
const TimelinePanel({super.key, required this.timeline});
|
||||
TimelinePanel({super.key, required this.timeline});
|
||||
|
||||
Future<void> update(TimelineManager manager) async {
|
||||
await manager.updateTimeline(
|
||||
|
@ -25,6 +27,10 @@ class TimelinePanel extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
|
||||
void scrollToTop() {
|
||||
controller.jumpTo(index: 0);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_logger.finer('Build');
|
||||
|
@ -50,7 +56,8 @@ class TimelinePanel extends StatelessWidget {
|
|||
],
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ScrollablePositionedList.builder(
|
||||
itemScrollController: controller,
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
if (index == 0) {
|
||||
|
|
|
@ -302,7 +302,7 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
return MultiTriggerAutocomplete(
|
||||
textEditingController: contentController,
|
||||
focusNode: focusNode,
|
||||
optionsAlignment: OptionsAlignment.bottomEnd,
|
||||
optionsAlignment: OptionsAlignment.top,
|
||||
autocompleteTriggers: [
|
||||
AutocompleteTrigger(
|
||||
trigger: '@',
|
||||
|
|
|
@ -78,6 +78,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||
currentGroup = null;
|
||||
}
|
||||
|
||||
final timeline = TimelinePanel(timeline: currentTimeline);
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
leading: accountService.loggedIn
|
||||
|
@ -150,13 +152,14 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||
child: Column(
|
||||
children: [
|
||||
StandardLinearProgressIndicator(nss.timelineLoadingStatus),
|
||||
Expanded(child: TimelinePanel(timeline: currentTimeline)),
|
||||
Expanded(child: timeline),
|
||||
],
|
||||
),
|
||||
),
|
||||
drawer: StandardAppDrawer(),
|
||||
bottomNavigationBar: const AppBottomNavBar(
|
||||
drawer: const StandardAppDrawer(),
|
||||
bottomNavigationBar: AppBottomNavBar(
|
||||
currentButton: NavBarButtons.timelines,
|
||||
onHomeButtonReclick: () => timeline.scrollToTop(),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton.small(
|
||||
onPressed: () {
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <media_kit_video/media_kit_video_plugin.h>
|
||||
#include <objectbox_flutter_libs/objectbox_flutter_libs_plugin.h>
|
||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||
#include <window_to_front/window_to_front_plugin.h>
|
||||
|
||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||
g_autoptr(FlPluginRegistrar) desktop_window_registrar =
|
||||
|
@ -32,4 +33,7 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
|||
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||
g_autoptr(FlPluginRegistrar) window_to_front_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "WindowToFrontPlugin");
|
||||
window_to_front_plugin_register_with_registrar(window_to_front_registrar);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
media_kit_video
|
||||
objectbox_flutter_libs
|
||||
url_launcher_linux
|
||||
window_to_front
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
|
|
@ -16,6 +16,7 @@ import path_provider_foundation
|
|||
import shared_preferences_foundation
|
||||
import sqflite
|
||||
import url_launcher_macos
|
||||
import window_to_front
|
||||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin"))
|
||||
|
@ -29,4 +30,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||
WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin"))
|
||||
}
|
||||
|
|
99
pubspec.lock
99
pubspec.lock
|
@ -293,10 +293,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: d8e9ca7e5d1983365c277f12c21b4362df6cf659c99af146ad4d04eb33033013
|
||||
sha256: "0d923fb610d0abf67f2149c3a50ef85f78bebecfc4d645719ca70bcf4abc788f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.2.6"
|
||||
version: "5.2.7"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -430,12 +430,11 @@ packages:
|
|||
flutter_web_auth_2:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: flutter_web_auth_2
|
||||
ref: add-linux-support
|
||||
resolved-ref: ce43f48b3b6c0b055e3871eedf1feee1cbe1a2d9
|
||||
url: "https://github.com/HankG/flutter_web_auth_2.git"
|
||||
source: git
|
||||
version: "2.0.4"
|
||||
name: flutter_web_auth_2
|
||||
sha256: "6aebfb1797bb1dd38cd32753832670482792e4f0b9cef0329d357f889dbf07c9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
flutter_web_auth_2_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -509,10 +508,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: go_router
|
||||
sha256: "432409518740645ce7f28802171b78783197d01149fad44f9b8ae55f40277139"
|
||||
sha256: feab99a20fd248c658c923ba98f4449ca6e575c3dee9fdf07146f4f33482c6bc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
version: "6.5.5"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -565,10 +564,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: image_picker
|
||||
sha256: "64b21d9f0e065f9ab0e4dde458076226c97382cc0c6949144cb874c62bf8e9f8"
|
||||
sha256: cb25f04595a88450970dbe727243ba8cd21b6f7e0d7d1fc5b789fc6f52e95494
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.7"
|
||||
version: "0.8.7+1"
|
||||
image_picker_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -589,10 +588,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_ios
|
||||
sha256: "50e882fe0a06bf0c8f7f5bce78d30975f279213293afc9471dc35f05617c50ff"
|
||||
sha256: d4cb8ab04f770dab9d04c7959e5f6d22e8c5280343d425f9344f93832cf58445
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.7+1"
|
||||
version: "0.8.7+2"
|
||||
image_picker_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -645,10 +644,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: markdown
|
||||
sha256: b3c60dee8c2af50ad0e6e90cceba98e47718a6ee0a7a6772c77846a0cc21f78b
|
||||
sha256: d95a9d12954aafc97f984ca29baaa7690ed4d9ec4140a23ad40580bcdb6c87f5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
version: "7.0.2"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -669,18 +668,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: media_kit
|
||||
sha256: "6b1e851865c2da3d84e93e8132ee0add32f604bf7fc211d019db9101a44c8608"
|
||||
sha256: defc249a792bf39346e6ee3ec40bbe48685c54aab86a25c4c27cc54a99afb6b1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.3+3"
|
||||
version: "0.0.4+1"
|
||||
media_kit_libs_ios_video:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: media_kit_libs_ios_video
|
||||
sha256: "495d6e2db9b325aebda16dad3c5ae6593a9dfa37ebe08360b4765a43fa09a3b0"
|
||||
sha256: a6ee06d466f539d161ef3b0c13f101713fd051d90c435a503420cb6a6f4c6e66
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "1.0.3"
|
||||
media_kit_libs_linux:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -693,10 +692,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: media_kit_libs_macos_video
|
||||
sha256: ff06adff5f544b11aa1d3ad596f9add477264c6026a60aebeed69eda1c7d9d63
|
||||
sha256: b3259875e201ec66d98ed33b32687ff14fcce7d91e74d420733c039556dff8cd
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "1.0.3"
|
||||
media_kit_libs_windows_video:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -837,10 +836,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "12eee51abdf4d34c590f043f45073adbb45514a108bd9db4491547a2fd891059"
|
||||
sha256: "818b2dc38b0f178e0ea3f7cf3b28146faab11375985d815942a68eee11c2d0f7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.2.1"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -981,58 +980,58 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "78528fd87d0d08ffd3e69551173c026e8eacc7b7079c82eb6a77413957b7e394"
|
||||
sha256: "858aaa72d8f61637d64e776aca82e1c67e6d9ee07979123c5d17115031c1b13b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.20"
|
||||
version: "2.1.0"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521
|
||||
sha256: "8304d8a1f7d21a429f91dee552792249362b68a331ac5c3c1caf370f658873f6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.17"
|
||||
version: "2.1.0"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310"
|
||||
sha256: cf2a42fb20148502022861f71698db12d937c7459345a1bdaa88fc91a91b3603
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_linux
|
||||
sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707"
|
||||
sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
shared_preferences_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_platform_interface
|
||||
sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc"
|
||||
sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.0"
|
||||
shared_preferences_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8"
|
||||
sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.6"
|
||||
version: "2.1.0"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_windows
|
||||
sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436"
|
||||
sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
shelf:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1274,26 +1273,26 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: video_player
|
||||
sha256: "868a139229acb5018d22aded3eb9cb4767ff43a8216573c086b6c535a4957481"
|
||||
sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
version: "2.6.1"
|
||||
video_player_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: video_player_android
|
||||
sha256: dc31c60ae591aa3ccb2d460c3690ceceb86cbb826e73428d817a37650dc4e229
|
||||
sha256: a592048a711d5739d9cea2255d425779f138d41095b9149bda60ce4bc1af8871
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.4"
|
||||
video_player_avfoundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: video_player_avfoundation
|
||||
sha256: "90468226c8687adf7b567d9bb42c25588783c4d30509af1fbd663b2dd049f700"
|
||||
sha256: af308d08c672d5ff718c60127665249617c37a709cb8f0a18dd28a0360299b7c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
video_player_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1306,10 +1305,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: video_player_web
|
||||
sha256: fb3bbeaf0302cb0c31340ebd6075487939aa1fe3b379d1a8784ef852b679940e
|
||||
sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.15"
|
||||
version: "2.0.16"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1334,6 +1333,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
window_to_front:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: window_to_front
|
||||
sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.3"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -17,11 +17,7 @@ dependencies:
|
|||
flutter_dotenv: ^5.0.2
|
||||
flutter_file_dialog: ^3.0.0
|
||||
flutter_secure_storage: ^8.0.0
|
||||
flutter_web_auth_2:
|
||||
git:
|
||||
url: https://github.com/HankG/flutter_web_auth_2.git
|
||||
path: flutter_web_auth_2
|
||||
ref: add-linux-support
|
||||
flutter_web_auth_2: ^2.1.2
|
||||
flutter_widget_from_html_core: ^0.10.0
|
||||
get_it: ^7.2.0
|
||||
get_it_mixin: ^4.1.1
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <media_kit_video/media_kit_video_plugin_c_api.h>
|
||||
#include <objectbox_flutter_libs/objectbox_flutter_libs_plugin.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
#include <window_to_front/window_to_front_plugin.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
DesktopWindowPluginRegisterWithRegistrar(
|
||||
|
@ -23,4 +24,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||
registry->GetRegistrarForPlugin("ObjectboxFlutterLibsPlugin"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||
WindowToFrontPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("WindowToFrontPlugin"));
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
media_kit_video
|
||||
objectbox_flutter_libs
|
||||
url_launcher_windows
|
||||
window_to_front
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
|
Ładowanie…
Reference in New Issue