Merge pull request #911 from pangeachat/829-remove-bad-activities
redact the current activity event when submitting feedback
This commit is contained in:
commit
e427a85f40
3 changed files with 64 additions and 16 deletions
|
|
@ -19,7 +19,7 @@ import 'package:matrix/matrix.dart';
|
|||
/// Represents an item in the completion cache.
|
||||
class _RequestCacheItem {
|
||||
MessageActivityRequest req;
|
||||
PracticeActivityModel? practiceActivity;
|
||||
PracticeActivityModelResponse? practiceActivity;
|
||||
|
||||
_RequestCacheItem({
|
||||
required this.req,
|
||||
|
|
@ -99,7 +99,7 @@ class PracticeGenerationController {
|
|||
|
||||
//TODO - allow return of activity content before sending the event
|
||||
// this requires some downstream changes to the way the event is handled
|
||||
Future<PracticeActivityModel?> getPracticeActivity(
|
||||
Future<PracticeActivityModelResponse?> getPracticeActivity(
|
||||
MessageActivityRequest req,
|
||||
PangeaMessageEvent event,
|
||||
) async {
|
||||
|
|
@ -119,6 +119,8 @@ class PracticeGenerationController {
|
|||
return null;
|
||||
}
|
||||
|
||||
final eventCompleter = Completer<PracticeActivityEvent?>();
|
||||
|
||||
// if the server points to an existing event, return that event
|
||||
if (res.existingActivityEventId != null) {
|
||||
final Event? existingEvent =
|
||||
|
|
@ -127,11 +129,19 @@ class PracticeGenerationController {
|
|||
debugPrint(
|
||||
'Existing activity event found: ${existingEvent?.content}',
|
||||
);
|
||||
if (existingEvent != null) {
|
||||
return PracticeActivityEvent(
|
||||
debugPrint(
|
||||
"eventID: ${existingEvent?.eventId}, event is redacted: ${existingEvent?.redacted}",
|
||||
);
|
||||
if (existingEvent != null && !existingEvent.redacted) {
|
||||
final activityEvent = PracticeActivityEvent(
|
||||
event: existingEvent,
|
||||
timeline: event.timeline,
|
||||
).practiceActivity;
|
||||
);
|
||||
eventCompleter.complete(activityEvent);
|
||||
return PracticeActivityModelResponse(
|
||||
activity: activityEvent.practiceActivity,
|
||||
eventCompleter: eventCompleter,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -141,11 +151,30 @@ class PracticeGenerationController {
|
|||
}
|
||||
|
||||
debugPrint('Activity generated: ${res.activity!.toJson()}');
|
||||
_sendAndPackageEvent(res.activity!, event).then((event) {
|
||||
eventCompleter.complete(event);
|
||||
});
|
||||
|
||||
_sendAndPackageEvent(res.activity!, event);
|
||||
_cache[cacheKey] =
|
||||
_RequestCacheItem(req: req, practiceActivity: res.activity!);
|
||||
final responseModel = PracticeActivityModelResponse(
|
||||
activity: res.activity!,
|
||||
eventCompleter: eventCompleter,
|
||||
);
|
||||
|
||||
return _cache[cacheKey]!.practiceActivity;
|
||||
_cache[cacheKey] = _RequestCacheItem(
|
||||
req: req,
|
||||
practiceActivity: responseModel,
|
||||
);
|
||||
|
||||
return responseModel;
|
||||
}
|
||||
}
|
||||
|
||||
class PracticeActivityModelResponse {
|
||||
final PracticeActivityModel? activity;
|
||||
final Completer<PracticeActivityEvent?> eventCompleter;
|
||||
|
||||
PracticeActivityModelResponse({
|
||||
required this.activity,
|
||||
required this.eventCompleter,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'dart:developer';
|
|||
|
||||
import 'package:fluffychat/pangea/controllers/my_analytics_controller.dart';
|
||||
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/controllers/practice_activity_generation_controller.dart';
|
||||
import 'package:fluffychat/pangea/enum/activity_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/practice_activity_event.dart';
|
||||
|
|
@ -45,6 +46,8 @@ class PracticeActivityCard extends StatefulWidget {
|
|||
|
||||
class PracticeActivityCardState extends State<PracticeActivityCard> {
|
||||
PracticeActivityModel? currentActivity;
|
||||
Completer<PracticeActivityEvent?>? currentActivityCompleter;
|
||||
|
||||
PracticeActivityRecordModel? currentCompletionRecord;
|
||||
bool fetchingActivity = false;
|
||||
|
||||
|
|
@ -133,9 +136,9 @@ class PracticeActivityCardState extends State<PracticeActivityCard> {
|
|||
return null;
|
||||
}
|
||||
|
||||
final PracticeActivityModel? ourNewActivity = await pangeaController
|
||||
.practiceGenerationController
|
||||
.getPracticeActivity(
|
||||
final PracticeActivityModelResponse? activityResponse =
|
||||
await pangeaController.practiceGenerationController
|
||||
.getPracticeActivity(
|
||||
MessageActivityRequest(
|
||||
userL1: pangeaController.languageController.userL1!.langCode,
|
||||
userL2: pangeaController.languageController.userL2!.langCode,
|
||||
|
|
@ -157,9 +160,10 @@ class PracticeActivityCardState extends State<PracticeActivityCard> {
|
|||
widget.pangeaMessageEvent,
|
||||
);
|
||||
|
||||
currentActivityCompleter = activityResponse?.eventCompleter;
|
||||
_updateFetchingActivity(false);
|
||||
|
||||
return ourNewActivity;
|
||||
return activityResponse?.activity;
|
||||
} catch (e, s) {
|
||||
debugger(when: kDebugMode);
|
||||
ErrorHandler.logError(
|
||||
|
|
@ -255,12 +259,27 @@ class PracticeActivityCardState extends State<PracticeActivityCard> {
|
|||
|
||||
/// clear the current activity, record, and selection
|
||||
/// fetch a new activity, including the offending activity in the request
|
||||
void submitFeedback(String feedback) {
|
||||
if (currentActivity == null) {
|
||||
Future<void> submitFeedback(String feedback) async {
|
||||
if (currentActivity == null || currentCompletionRecord == null) {
|
||||
debugger(when: kDebugMode);
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentActivityCompleter != null) {
|
||||
final activityEvent = await currentActivityCompleter!.future;
|
||||
await activityEvent?.event.redactEvent(reason: feedback);
|
||||
} else {
|
||||
debugger(when: kDebugMode);
|
||||
ErrorHandler.logError(
|
||||
e: Exception('No completer found for current activity'),
|
||||
data: {
|
||||
'activity': currentActivity,
|
||||
'record': currentCompletionRecord,
|
||||
'feedback': feedback,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
_fetchNewActivity(
|
||||
ActivityQualityFeedback(
|
||||
feedbackText: feedback,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ description: Learn a language while texting your friends.
|
|||
# Pangea#
|
||||
publish_to: none
|
||||
# On version bump also increase the build number for F-Droid
|
||||
version: 1.23.3+3562
|
||||
version: 1.23.4+3563
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue