[mob] Allow internal user to approve recovery for testing

This commit is contained in:
Neeraj Gupta 2024-12-10 13:43:25 +05:30
parent c4799a719b
commit ebf92dba94
4 changed files with 37 additions and 17 deletions

View File

@ -11,6 +11,7 @@ import "package:photos/emergency/other_contact_page.dart";
import "package:photos/emergency/select_contact_page.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/l10n/l10n.dart";
import "package:photos/service_locator.dart";
import "package:photos/theme/colors.dart";
import 'package:photos/theme/ente_theme.dart';
import "package:photos/ui/common/loading_widget.dart";
@ -512,18 +513,22 @@ class _EmergencyPageState extends State<EmergencyPage> {
},
isInAlert: true,
),
// if (kDebugMode)
// ButtonWidget(
// labelText: "Approve recovery",
// buttonType: ButtonType.primary,
// buttonSize: ButtonSize.large,
// buttonAction: ButtonAction.second,
// shouldStickToDarkTheme: true,
// onTap: () async {
// showToast(context, "Coming soon for internal users");
// },
// isInAlert: true,
// ),
if (flagService.internalUser)
ButtonWidget(
labelText: "Approve recovery (internal)",
buttonType: ButtonType.primary,
buttonSize: ButtonSize.large,
buttonAction: ButtonAction.second,
shouldStickToDarkTheme: true,
onTap: () async {
await EmergencyContactService.instance.approveRecovery(session);
if (mounted) {
setState(() {});
}
unawaited(_fetchData());
},
isInAlert: true,
),
ButtonWidget(
labelText: S.of(context).cancel,
buttonType: ButtonType.tertiary,

View File

@ -152,6 +152,22 @@ class EmergencyContactService {
}
}
Future<void> approveRecovery(RecoverySessions session) async {
try {
await _enteDio.post(
"/emergency-contacts/approve-recovery",
data: {
"userID": session.user.id,
"emergencyContactID": session.emergencyContact.id,
"id": session.id,
},
);
} catch (e, s) {
Logger("EmergencyContact").severe('failed to approve recovery', e, s);
rethrow;
}
}
Future<(String, KeyAttributes)> getRecoveryInfo(
RecoverySessions sessions,
) async {

View File

@ -9,4 +9,4 @@ DROP INDEX IF EXISTS idx_emergency_recovery_limit_active_recovery;
DROP TABLE IF EXISTS emergency_recovery;
DROP TABLE IF EXISTS emergency_contact;
DROP FUNCTION IF EXISTS trigger_updated_at_microseconds_column;
DROP FUNCTION IF EXISTS trigger_updated_at_microseconds_column;

View File

@ -73,9 +73,9 @@ func (repo *Repository) UpdateRecoveryStatusForID(ctx context.Context, sessionID
result, err = repo.DB.ExecContext(ctx, `UPDATE emergency_recovery SET status=$1, wait_till=$2 WHERE id=$3 and status = ANY($4)`, status, time.Microseconds(), sessionID, pq.Array(validPrevStatus))
} else {
result, err = repo.DB.ExecContext(ctx, `UPDATE emergency_recovery SET status=$1 WHERE id=$2 and status = ANY($3)`, status, sessionID, pq.Array(validPrevStatus))
if err != nil {
return false, stacktrace.Propagate(err, "")
}
}
if err != nil {
return false, stacktrace.Propagate(err, "")
}
rows, _ := result.RowsAffected()
return rows > 0, nil
@ -106,7 +106,6 @@ func validPreviousStatus(newStatus ente.RecoveryStatus) []ente.RecoveryStatus {
break
case ente.RecoveryStatusReady:
result = append(result, ente.RecoveryStatusWaiting, ente.RecoveryStatusReady)
break
case ente.RecoveryStatusStopped:
result = append(result, ente.RecoveryStatusWaiting, ente.RecoveryStatusReady)
case ente.RecoveryStatusRejected: