continue subscriptions and coins
This commit is contained in:
+21
-13
@@ -1,4 +1,5 @@
|
||||
const admin = require("firebase-admin");
|
||||
const { FieldValue } = require("firebase-admin/firestore");
|
||||
const { onDocumentCreated } = require("firebase-functions/firestore");
|
||||
const { HttpsError, onCall } = require("firebase-functions/https");
|
||||
|
||||
@@ -35,7 +36,7 @@ const onOrderCreated = onDocumentCreated(
|
||||
await orderRef.set(
|
||||
{
|
||||
status: ORDER_STATUS.REJECTED,
|
||||
processedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
processedAt: FieldValue.serverTimestamp(),
|
||||
failureReason: "USER_NOT_FOUND",
|
||||
},
|
||||
{ merge: true },
|
||||
@@ -47,7 +48,7 @@ const onOrderCreated = onDocumentCreated(
|
||||
await orderRef.set(
|
||||
{
|
||||
status: ORDER_STATUS.REJECTED,
|
||||
processedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
processedAt: FieldValue.serverTimestamp(),
|
||||
failureReason: "INVALID_AMOUNT",
|
||||
},
|
||||
{ merge: true },
|
||||
@@ -76,7 +77,7 @@ const onOrderCreated = onDocumentCreated(
|
||||
orderRef,
|
||||
{
|
||||
status: ORDER_STATUS.REJECTED,
|
||||
processedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
processedAt: FieldValue.serverTimestamp(),
|
||||
failureReason: "INSUFFICIENT_FUNDS",
|
||||
balanceBefore: currentBalance,
|
||||
balanceAfter: currentBalance,
|
||||
@@ -89,15 +90,15 @@ const onOrderCreated = onDocumentCreated(
|
||||
if (userSnapshot?.exists) {
|
||||
transaction.update(userRef, {
|
||||
coins: nextBalance,
|
||||
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
updatedAt: FieldValue.serverTimestamp(),
|
||||
});
|
||||
} else {
|
||||
transaction.set(
|
||||
userRef,
|
||||
{
|
||||
coins: nextBalance,
|
||||
createdAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
createdAt: FieldValue.serverTimestamp(),
|
||||
updatedAt: FieldValue.serverTimestamp(),
|
||||
},
|
||||
{ merge: true },
|
||||
);
|
||||
@@ -107,7 +108,7 @@ const onOrderCreated = onDocumentCreated(
|
||||
orderRef,
|
||||
{
|
||||
status: ORDER_STATUS.APPLIED,
|
||||
processedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
processedAt: FieldValue.serverTimestamp(),
|
||||
balanceBefore: currentBalance,
|
||||
balanceAfter: nextBalance,
|
||||
},
|
||||
@@ -124,7 +125,7 @@ const onOrderCreated = onDocumentCreated(
|
||||
await orderRef.set(
|
||||
{
|
||||
status: ORDER_STATUS.REJECTED,
|
||||
processedAt: admin.firestore.FieldValue.serverTimestamp(),
|
||||
processedAt: FieldValue.serverTimestamp(),
|
||||
failureReason: "PROCESSING_ERROR",
|
||||
errorMessage: error?.message || String(error),
|
||||
},
|
||||
@@ -168,17 +169,24 @@ const createSongOrder = onCall({ region: REGION }, async (request) => {
|
||||
);
|
||||
}
|
||||
|
||||
const metadata = {
|
||||
source:
|
||||
typeof data?.source === "string" && data.source.trim()
|
||||
? data.source.trim()
|
||||
: "music_generation",
|
||||
};
|
||||
|
||||
if (typeof data?.requestId === "string" && data.requestId.trim()) {
|
||||
metadata.requestId = data.requestId.trim();
|
||||
}
|
||||
|
||||
const { orderId } = await createOrderDocument({
|
||||
userId: auth.uid,
|
||||
type: ORDER_TYPES.SONG,
|
||||
amount,
|
||||
songId,
|
||||
createdBy: auth.uid,
|
||||
metadata: {
|
||||
source: data?.source || "music_generation",
|
||||
requestId:
|
||||
typeof data?.requestId === "string" ? data.requestId : undefined,
|
||||
},
|
||||
metadata,
|
||||
});
|
||||
|
||||
return { orderId };
|
||||
|
||||
Reference in New Issue
Block a user