🐛 Fix post visibility issue

This commit is contained in:
LittleSheep 2024-10-11 00:28:09 +08:00
parent ca18d6ade4
commit 52312662fb
3 changed files with 36 additions and 50 deletions

View File

@ -125,7 +125,7 @@ class AuthProvider extends GetConnect {
userAgent: await ServiceFinder.getUserAgent(), userAgent: await ServiceFinder.getUserAgent(),
sendUserAgent: true, sendUserAgent: true,
); );
client.httpClient.addAuthenticator(requestAuthenticator); client.httpClient.addRequestModifier(requestAuthenticator);
client.httpClient.baseUrl = ServiceFinder.buildUrl(service, null); client.httpClient.baseUrl = ServiceFinder.buildUrl(service, null);
return client; return client;

View File

@ -41,25 +41,27 @@ class AttachmentProvider extends GetConnect {
} }
} }
final resp = await get( if (pendingQuery.isNotEmpty) {
'/attachments?take=${pendingQuery.length}&id=${pendingQuery.join(',')}', final resp = await get(
); '/attachments?take=${pendingQuery.length}&id=${pendingQuery.join(',')}',
if (resp.statusCode != 200) return result; );
if (resp.statusCode != 200) return result;
final rawOut = PaginationResult.fromJson(resp.body); final rawOut = PaginationResult.fromJson(resp.body);
if (rawOut.data == null) return result; if (rawOut.data == null) return result;
final List<Attachment> out = final List<Attachment> out =
rawOut.data!.map((x) => Attachment.fromJson(x)).toList(); rawOut.data!.map((x) => Attachment.fromJson(x)).toList();
for (final item in out) { for (final item in out) {
if (item.destination != 0 && item.isAnalyzed) { if (item.destination != 0 && item.isAnalyzed) {
_cachedResponses[item.rid] = item; _cachedResponses[item.rid] = item;
}
} }
} for (var i = 0; i < out.length; i++) {
for (var i = 0; i < out.length; i++) { for (var j = 0; j < rid.length; j++) {
for (var j = 0; j < rid.length; j++) { if (out[i].rid == rid[j]) {
if (out[i].rid == rid[j]) { result[j] = out[i];
result[j] = out[i]; }
} }
} }
} }

View File

@ -3,22 +3,11 @@ import 'package:solian/exceptions/request.dart';
import 'package:solian/exceptions/unauthorized.dart'; import 'package:solian/exceptions/unauthorized.dart';
import 'package:solian/models/post.dart'; import 'package:solian/models/post.dart';
import 'package:solian/providers/auth.dart'; import 'package:solian/providers/auth.dart';
import 'package:solian/services.dart';
class PostProvider extends GetConnect {
@override
void onInit() {
httpClient.baseUrl = ServiceFinder.buildUrl('interactive', null);
}
class PostProvider extends GetxController {
Future<Response> seeWhatsNew(int pivot) async { Future<Response> seeWhatsNew(int pivot) async {
GetConnect client;
final AuthProvider auth = Get.find(); final AuthProvider auth = Get.find();
if (auth.isAuthorized.value) { final client = await auth.configureClient('co');
client = await auth.configureClient('co');
} else {
client = await ServiceFinder.configureClient('co');
}
final resp = await client.get('/whats-new?pivot=$pivot'); final resp = await client.get('/whats-new?pivot=$pivot');
if (resp.statusCode != 200) { if (resp.statusCode != 200) {
throw RequestException(resp); throw RequestException(resp);
@ -29,18 +18,13 @@ class PostProvider extends GetConnect {
Future<Response> listRecommendations(int page, Future<Response> listRecommendations(int page,
{String? realm, String? channel, int take = 10}) async { {String? realm, String? channel, int take = 10}) async {
GetConnect client;
final AuthProvider auth = Get.find();
final queries = [ final queries = [
'take=$take', 'take=$take',
'offset=$page', 'offset=$page',
if (realm != null) 'realm=$realm', if (realm != null) 'realm=$realm',
]; ];
if (auth.isAuthorized.value) { final AuthProvider auth = Get.find();
client = await auth.configureClient('co'); final client = await auth.configureClient('interactive');
} else {
client = await ServiceFinder.configureClient('co');
}
final resp = await client.get( final resp = await client.get(
channel == null channel == null
? '/recommendations?${queries.join('&')}' ? '/recommendations?${queries.join('&')}'
@ -80,7 +64,9 @@ class PostProvider extends GetConnect {
if (author != null) 'author=$author', if (author != null) 'author=$author',
if (realm != null) 'realm=$realm', if (realm != null) 'realm=$realm',
]; ];
final resp = await get('/posts?${queries.join('&')}'); final AuthProvider auth = Get.find();
final client = await auth.configureClient('co');
final resp = await client.get('/posts?${queries.join('&')}');
if (resp.statusCode != 200) { if (resp.statusCode != 200) {
throw RequestException(resp); throw RequestException(resp);
} }
@ -89,7 +75,10 @@ class PostProvider extends GetConnect {
} }
Future<Response> listPostReplies(String alias, int page) async { Future<Response> listPostReplies(String alias, int page) async {
final resp = await get('/posts/$alias/replies?take=${10}&offset=$page'); final AuthProvider auth = Get.find();
final client = await auth.configureClient('co');
final resp =
await client.get('/posts/$alias/replies?take=${10}&offset=$page');
if (resp.statusCode != 200) { if (resp.statusCode != 200) {
throw RequestException(resp); throw RequestException(resp);
} }
@ -98,7 +87,9 @@ class PostProvider extends GetConnect {
} }
Future<List<Post>> listPostFeaturedReply(String alias, {int take = 1}) async { Future<List<Post>> listPostFeaturedReply(String alias, {int take = 1}) async {
final resp = await get('/posts/$alias/replies/featured?take=$take'); final AuthProvider auth = Get.find();
final client = await auth.configureClient('co');
final resp = await client.get('/posts/$alias/replies/featured?take=$take');
if (resp.statusCode != 200) { if (resp.statusCode != 200) {
throw RequestException(resp); throw RequestException(resp);
} }
@ -107,16 +98,9 @@ class PostProvider extends GetConnect {
} }
Future<Response> getPost(String alias) async { Future<Response> getPost(String alias) async {
final resp = await get('/posts/$alias'); final AuthProvider auth = Get.find();
if (resp.statusCode != 200) { final client = await auth.configureClient('co');
throw RequestException(resp); final resp = await client.get('/posts/$alias');
}
return resp;
}
Future<Response> getArticle(String alias) async {
final resp = await get('/articles/$alias');
if (resp.statusCode != 200) { if (resp.statusCode != 200) {
throw RequestException(resp); throw RequestException(resp);
} }