Я создаю приложение Flutter, которое использует Firebase в качестве бэкэнда для аутентификации с firestore в качестве базы данных и хранилищем для больших файлов для хранения некоторых пользовательских данных. Я хочу разрешить пользователям удалять свою учетную запись и все связанные с ней данные, но я не хочу, чтобы это было сделано немедленно, чтобы пользователи могли восстановить свою учетную запись, если они решат вернуться в течение 15 дней или около того.
Первоначально я думал, что смогу сделать это с помощью функции Firebase, которую я мог бы вызвать из моего приложения, которая показана здесь:
import * as functions from 'firebase-functions';
const admin = require('firebase-admin');
admin.initializeApp();
const fifteenDays = 1296000000;
export const helloWorld = functions.https.onCall((data, context) => {
setTimeout(async () => {
try {
await admin.auth().deleteUser(data.id);
console.log(`Deleted User: ${data.id}`);
await admin.firestore().collection("users").document(data.id).delete();
console.log(`Deleted User Firestore: ${data.id}`);
await admin.storage().bucket().deleteFiles({
prefix: `userPhotos/${data.id}/`,
force: true,
},
function(err: any) {
if (err) {
console.log(err);
}
else {
console.log(`All the Firebase Storage files in users/${data.id}/ have been deleted`);
}
}
);
}
catch (error) {
console.log(error);
}
}, fifteenDays);
});
Но после прочтения Советы и рекомендации по функциям Firebase , чтобы найти Метод отмены тайм-аута. Я видел, что код, запускаемый после завершения функции, не может получить доступ к ЦП, поэтому этот код даже не будет работать. Возможность отменить запланированное удаление? Любое бесплатное решение будет полезно.