fix(web-app): position ID, issuance earned (#96)

Bug #1: Position ID Transformation Issue (#95)

  Problem: Frontend applied incorrect byte conversion to position IDs, causing transactions to fail with "NoPermission"
  errors.

  Root Cause: formatId() function did little-endian byte conversion on already-correct numeric strings from GraphQL.

  Fix: Direct conversion BigInt(obj.id) instead of formatId(obj.id as Hex) in usePositions.ts.

  Result: Users can now successfully stake/unstake positions.

  ---
  Bug #2: Issuance Earned Calculation Error (#97)

  Problem: Frontend showed negative "Issuance Earned" values (e.g., -4,991 KRK) due to wrong mathematical formula.

  Root Cause: Formula calculated position.totalSupplyInit - currentTotalSupply (always negative when supply increases).

  Fix: Correct formula (currentTotalSupply - position.totalSupplyInit) × position.share in Vue components.

  Result: Shows realistic positive earnings and enables proper economic monitoring.

Co-authored-by: steve <steve@harberg.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/harb/pulls/96
Co-authored-by: traddoo <traddoo@noreply.codeberg.org>
Co-committed-by: traddoo <traddoo@noreply.codeberg.org>
This commit is contained in:
traddoo 2025-11-20 19:44:10 +01:00 committed by johba
parent a555a2fdd1
commit beefe22f90
6 changed files with 343 additions and 19 deletions

View file

@ -45,6 +45,11 @@
"types": "./dist/version.d.ts",
"require": "./dist/version.js",
"import": "./dist/version.js"
},
"./position": {
"types": "./dist/position.d.ts",
"require": "./dist/position.js",
"import": "./dist/position.js"
}
},
"files": [