Adds support for editing and deleting lemmy posts. (#48)
* Adds support for editing and deleting lemmy posts. * Fix issues with flutter_localizations --------- Co-authored-by: John Wesley <dev@jwr.one>
This commit is contained in:
parent
a5e7d9635c
commit
3720b4c2a6
|
@ -207,36 +207,76 @@ class APIThreads {
|
||||||
Future<PostModel> edit(
|
Future<PostModel> edit(
|
||||||
int entryID,
|
int entryID,
|
||||||
String title,
|
String title,
|
||||||
bool isOc,
|
bool? isOc,
|
||||||
String body,
|
String body,
|
||||||
String lang,
|
String? lang,
|
||||||
bool isAdult,
|
bool? isAdult,
|
||||||
) async {
|
) async {
|
||||||
final path = '/api/entry/$entryID';
|
switch (software) {
|
||||||
|
case ServerSoftware.kbin:
|
||||||
|
case ServerSoftware.mbin:
|
||||||
|
final path = '/api/entry/$entryID';
|
||||||
|
|
||||||
final response = await httpClient.put(
|
final response = await httpClient.put(
|
||||||
Uri.https(server, path),
|
Uri.https(server, path),
|
||||||
body: jsonEncode({
|
body: jsonEncode({
|
||||||
'title': title,
|
'title': title,
|
||||||
'tags': [],
|
'tags': [],
|
||||||
'isOc': isOc,
|
'isOc': isOc,
|
||||||
'body': body,
|
'body': body,
|
||||||
'lang': lang,
|
'lang': lang,
|
||||||
'isAdult': isAdult
|
'isAdult': isAdult
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
httpErrorHandler(response, message: "Failed to edit entry");
|
httpErrorHandler(response, message: "Failed to edit entry");
|
||||||
|
|
||||||
return PostModel.fromKbinEntry(
|
return PostModel.fromKbinEntry(
|
||||||
jsonDecode(response.body) as Map<String, Object?>);
|
jsonDecode(response.body) as Map<String, Object?>);
|
||||||
|
|
||||||
|
case ServerSoftware.lemmy:
|
||||||
|
const path = '/api/v3/post';
|
||||||
|
|
||||||
|
final response = await httpClient.put(
|
||||||
|
Uri.https(server, path),
|
||||||
|
headers: {'Content-Type': 'application/json'},
|
||||||
|
body: jsonEncode({
|
||||||
|
'post_id': entryID,
|
||||||
|
'name': title,
|
||||||
|
'body': body,
|
||||||
|
'nsfw': isAdult
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
httpErrorHandler(response, message: 'Failed to edit entry');
|
||||||
|
|
||||||
|
return PostModel.fromLemmy(
|
||||||
|
jsonDecode(response.body)['post_view'] as Map<String, Object?>);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> delete(int postID) async {
|
Future<void> delete(int postID) async {
|
||||||
final response =
|
switch (software) {
|
||||||
await httpClient.delete(Uri.https(server, '/api/entry/$postID'));
|
case ServerSoftware.kbin:
|
||||||
|
case ServerSoftware.mbin:
|
||||||
|
final response =
|
||||||
|
await httpClient.delete(Uri.https(server, '/api/entry/$postID'));
|
||||||
|
|
||||||
httpErrorHandler(response, message: "Failed to delete entry");
|
httpErrorHandler(response, message: "Failed to delete entry");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ServerSoftware.lemmy:
|
||||||
|
final response =
|
||||||
|
await httpClient.post(Uri.https(server, '/api/v3/post/delete'),
|
||||||
|
headers: {'Content-Type': 'application/json'},
|
||||||
|
body: jsonEncode({
|
||||||
|
'post_id': postID,
|
||||||
|
'deleted': true
|
||||||
|
}));
|
||||||
|
|
||||||
|
httpErrorHandler(response, message: "Failed to delete entry");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<PostModel> createArticle(
|
Future<PostModel> createArticle(
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:dynamic_color/dynamic_color.dart';
|
import 'package:dynamic_color/dynamic_color.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:interstellar/src/screens/explore/explore_screen.dart';
|
import 'package:interstellar/src/screens/explore/explore_screen.dart';
|
||||||
import 'package:interstellar/src/screens/feed/feed_screen.dart';
|
import 'package:interstellar/src/screens/feed/feed_screen.dart';
|
||||||
import 'package:interstellar/src/screens/profile/notification/notification_badge.dart';
|
import 'package:interstellar/src/screens/profile/notification/notification_badge.dart';
|
||||||
|
@ -43,6 +44,15 @@ class _AppState extends State<App> {
|
||||||
..updateSettingsController(settingsController),
|
..updateSettingsController(settingsController),
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
restorationScopeId: 'app',
|
restorationScopeId: 'app',
|
||||||
|
localizationsDelegates: const [
|
||||||
|
AppLocalizations.delegate,
|
||||||
|
GlobalMaterialLocalizations.delegate,
|
||||||
|
GlobalWidgetsLocalizations.delegate,
|
||||||
|
GlobalCupertinoLocalizations.delegate,
|
||||||
|
],
|
||||||
|
supportedLocales: const [
|
||||||
|
Locale('en', ''),
|
||||||
|
],
|
||||||
onGenerateTitle: (BuildContext context) =>
|
onGenerateTitle: (BuildContext context) =>
|
||||||
AppLocalizations.of(context)!.appTitle,
|
AppLocalizations.of(context)!.appTitle,
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
|
|
|
@ -186,9 +186,9 @@ class _PostPageState extends State<PostPage> {
|
||||||
.edit(
|
.edit(
|
||||||
post.id,
|
post.id,
|
||||||
post.title!,
|
post.title!,
|
||||||
post.isOC!,
|
post.isOC,
|
||||||
body,
|
body,
|
||||||
post.lang!,
|
post.lang,
|
||||||
post.isNSFW,
|
post.isNSFW,
|
||||||
),
|
),
|
||||||
PostType.microblog => context
|
PostType.microblog => context
|
||||||
|
|
29
pubspec.lock
29
pubspec.lock
|
@ -327,6 +327,11 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "3.0.2"
|
||||||
|
flutter_localizations:
|
||||||
|
dependency: "direct main"
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
flutter_markdown:
|
flutter_markdown:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -549,26 +554,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.0"
|
version: "10.0.4"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "3.0.3"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "3.0.1"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -685,10 +690,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.12.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1042,10 +1047,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.1"
|
version: "0.7.0"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1162,10 +1167,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "13.0.0"
|
version: "14.2.1"
|
||||||
volume_controller:
|
volume_controller:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -11,6 +11,8 @@ environment:
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
flutter_localizations:
|
||||||
|
sdk: flutter
|
||||||
flutter_markdown: ^0.6.23
|
flutter_markdown: ^0.6.23
|
||||||
http: ^1.2.1
|
http: ^1.2.1
|
||||||
http_parser: ^4.0.2
|
http_parser: ^4.0.2
|
||||||
|
|
Loading…
Reference in New Issue