Merge branch 'group_management' into 'main'

Group management

See merge request mysocialportal/relatica!31
codemagic-setup
HankG 2023-04-11 14:51:05 +00:00
commit 9b0aa68aa4
13 zmienionych plików z 93 dodań i 59 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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:

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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) {

Wyświetl plik

@ -302,7 +302,7 @@ class _EditorScreenState extends State<EditorScreen> {
return MultiTriggerAutocomplete(
textEditingController: contentController,
focusNode: focusNode,
optionsAlignment: OptionsAlignment.bottomEnd,
optionsAlignment: OptionsAlignment.top,
autocompleteTriggers: [
AutocompleteTrigger(
trigger: '@',

Wyświetl plik

@ -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: () {

Wyświetl plik

@ -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);
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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"))
}

Wyświetl plik

@ -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:

Wyświetl plik

@ -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

Wyświetl plik

@ -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"));
}

Wyświetl plik

@ -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