kopia lustrzana https://gitlab.com/mysocialportal/relatica
Add support for unlisted post creation/editing
rodzic
b54dc152b5
commit
b978b44201
|
@ -129,9 +129,11 @@ class StatusHeaderControl extends StatelessWidget {
|
|||
await showVisibilityDialog(context, manager, entry.visibility);
|
||||
},
|
||||
icon: Icon(
|
||||
entry.visibility.type == v.VisibilityType.public
|
||||
? Icons.public
|
||||
: Icons.lock,
|
||||
switch (entry.visibility.type) {
|
||||
v.VisibilityType.public => Icons.public,
|
||||
v.VisibilityType.private => Icons.lock,
|
||||
v.VisibilityType.unlisted => Icons.not_interested,
|
||||
},
|
||||
color: Theme.of(context).hintColor,
|
||||
size: Theme.of(context).textTheme.bodySmall?.fontSize,
|
||||
),
|
||||
|
|
|
@ -66,6 +66,9 @@ Future<bool?> showVisibilityDialog(
|
|||
if (visibility.type == v.VisibilityType.public) ...[
|
||||
const Text('Public')
|
||||
],
|
||||
if (visibility.type == v.VisibilityType.unlisted) ...[
|
||||
const Text('Unlisted')
|
||||
],
|
||||
if (visibility.type != v.VisibilityType.public) ...[
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
enum VisibilityType {
|
||||
public,
|
||||
private,
|
||||
unlisted,
|
||||
;
|
||||
|
||||
String toLabel() {
|
||||
|
@ -9,6 +10,8 @@ enum VisibilityType {
|
|||
return 'Public';
|
||||
case VisibilityType.private:
|
||||
return 'Private';
|
||||
case VisibilityType.unlisted:
|
||||
return 'Unlisted';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +49,10 @@ class Visibility {
|
|||
type: VisibilityType.private,
|
||||
);
|
||||
|
||||
factory Visibility.unlisted() => const Visibility(
|
||||
type: VisibilityType.unlisted,
|
||||
);
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
|
|
|
@ -580,13 +580,14 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
children: [
|
||||
const Text('Visibility:'),
|
||||
IconButton(
|
||||
onPressed: () async {
|
||||
await showVisibilityDialog(context, cm, visibility);
|
||||
},
|
||||
icon: visibility.type == VisibilityType.public
|
||||
? const Icon(Icons.public)
|
||||
: const Icon(Icons.lock),
|
||||
)
|
||||
onPressed: () async {
|
||||
await showVisibilityDialog(context, cm, visibility);
|
||||
},
|
||||
icon: Icon(switch (visibility.type) {
|
||||
VisibilityType.public => Icons.public,
|
||||
VisibilityType.private => Icons.lock,
|
||||
VisibilityType.unlisted => Icons.not_interested,
|
||||
}))
|
||||
],
|
||||
);
|
||||
}
|
||||
|
@ -632,6 +633,12 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
return;
|
||||
}
|
||||
|
||||
if (value == VisibilityType.unlisted &&
|
||||
currentCircle == null) {
|
||||
visibility = Visibility.unlisted();
|
||||
return;
|
||||
}
|
||||
|
||||
visibility = Visibility(
|
||||
type: VisibilityType.private,
|
||||
allowedCircleIds: [currentCircle!.id],
|
||||
|
|
|
@ -78,6 +78,8 @@ extension TimelineEntryMastodonExtensions on TimelineEntry {
|
|||
final visibilityString = json['visibility'];
|
||||
if (visibilityString == 'public') {
|
||||
visibility = Visibility.public();
|
||||
} else if (visibilityString == 'unlisted') {
|
||||
visibility = Visibility.unlisted();
|
||||
} else if (visibilityString == 'private') {
|
||||
final allowedUserIds =
|
||||
json['friendica']?['visibility']?['allow_cid'] as List<dynamic>? ??
|
||||
|
@ -96,8 +98,6 @@ extension TimelineEntryMastodonExtensions on TimelineEntry {
|
|||
allowedCircleIds: allowedCircleIds.map((e) => e.toString()).toList(),
|
||||
excludedCircleIds: excludedCircleIds.map((e) => e.toString()).toList(),
|
||||
);
|
||||
} else if (visibilityString == 'unlisted') {
|
||||
visibility = Visibility.private();
|
||||
} else {
|
||||
visibility = Visibility.private();
|
||||
}
|
||||
|
|
|
@ -8,6 +8,10 @@ extension VisibilityMastodonExtensions on Visibility {
|
|||
return 'public';
|
||||
}
|
||||
|
||||
if (type == VisibilityType.unlisted) {
|
||||
return 'unlisted';
|
||||
}
|
||||
|
||||
if (!onComment && hasDetails) {
|
||||
final circleId =
|
||||
allowedCircleIds.firstOrNull ?? allowedUserIds.firstOrNull;
|
||||
|
|
26
pubspec.lock
26
pubspec.lock
|
@ -181,10 +181,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.2"
|
||||
version: "1.18.0"
|
||||
color_blindness:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -849,10 +849,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
version: "1.10.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1279,18 +1279,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.0"
|
||||
version: "1.11.1"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.1.2"
|
||||
stream_transform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1335,10 +1335,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.0"
|
||||
version: "0.6.1"
|
||||
time_machine:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1559,10 +1559,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
||||
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.4-beta"
|
||||
version: "0.3.0"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1620,5 +1620,5 @@ packages:
|
|||
source: hosted
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=3.1.0-185.0.dev <4.0.0"
|
||||
dart: ">=3.2.0-194.0.dev <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
|
Ładowanie…
Reference in New Issue