Compare commits

..

5 Commits

Author SHA1 Message Date
c0ee0a5df1 resolve conflict 2025-11-11 09:54:04 +07:00
ad1e488c3f feat: linux sp 2025-11-11 09:48:36 +07:00
7b42b0df58 optimize scan UTXO 2025-11-11 09:48:36 +07:00
8b643cbb4a mac os support 2025-11-11 09:48:36 +07:00
57ea476e13 refactor: 101125/remove_mock_data 2025-11-10 11:27:35 +07:00

View File

@ -78,7 +78,7 @@ ipcMain.handle('wallet:checkKeystore', async () => {
fs.statSync(path.join(walletDir, a)).mtime.getTime() fs.statSync(path.join(walletDir, a)).mtime.getTime()
)[0] )[0]
if (!newestFile?.length) return { exists: false, filePath: null } if (!newestFile) return { exists: false, filePath: null }
const resolvedPath = path.join(walletDir, newestFile) const resolvedPath = path.join(walletDir, newestFile)
let minBlockHeight: number | null = null let minBlockHeight: number | null = null
@ -88,10 +88,11 @@ ipcMain.handle('wallet:checkKeystore', async () => {
const data = JSON.parse(json) const data = JSON.parse(json)
const height = data?.minBlockHeight const height = data?.minBlockHeight
if (Number.isFinite(height)) minBlockHeight = height if (typeof height === 'number' && Number.isFinite(height)) {
minBlockHeight = height
}
} catch (error) { } catch (error) {
console.warn('Unable to read minBlockHeight from keystore:', error) console.warn('Unable to read minBlockHeight from keystore:', error)
return { exists: true, filePath: resolvedPath }
} }
return { exists: true, filePath: resolvedPath, minBlockHeight } return { exists: true, filePath: resolvedPath, minBlockHeight }
@ -136,34 +137,37 @@ ipcMain.handle(
} }
) )
ipcMain.handle('wallet:getMinBlockHeight', async (_event, filePath: string | null) => { ipcMain.handle(
if (!filePath) { 'wallet:getMinBlockHeight',
return { success: false, error: 'No keystore file path provided.', minBlockHeight: null } async (_event, filePath: string | null) => {
} if (!filePath) {
return { success: false, error: 'No keystore file path provided.', minBlockHeight: null }
try {
const normalizedPath = path.isAbsolute(filePath)
? filePath
: path.join(process.cwd(), filePath)
if (!fs.existsSync(normalizedPath)) {
return { success: false, error: 'Keystore file not found.', minBlockHeight: null }
} }
const fileContents = fs.readFileSync(normalizedPath, 'utf-8') try {
const walletJson = JSON.parse(fileContents) const normalizedPath = path.isAbsolute(filePath)
const height = walletJson?.minBlockHeight ? filePath
: path.join(process.cwd(), filePath)
if (Number.isFinite(height)) { if (!fs.existsSync(normalizedPath)) {
return { success: true, minBlockHeight: height } return { success: false, error: 'Keystore file not found.', minBlockHeight: null }
}
const fileContents = fs.readFileSync(normalizedPath, 'utf-8')
const walletJson = JSON.parse(fileContents)
const height = walletJson?.minBlockHeight
if (typeof height === 'number' && Number.isFinite(height)) {
return { success: true, minBlockHeight: height }
}
return { success: true, minBlockHeight: null }
} catch (error) {
console.error('Error reading min block height:', error)
return { success: false, error: String(error), minBlockHeight: null }
} }
return { success: true, minBlockHeight: null }
} catch (error) {
console.error('Error reading min block height:', error)
return { success: false, error: String(error), minBlockHeight: null }
} }
}) )
ipcMain.handle('wallet:generateKeysFromSeed', async (_event, seedPhrase: string[]) => { ipcMain.handle('wallet:generateKeysFromSeed', async (_event, seedPhrase: string[]) => {
try { try {
@ -184,6 +188,7 @@ ipcMain.handle('wallet:buildTransaction', async (_event, args) => {
import.meta.env.VITE_APP_API, import.meta.env.VITE_APP_API,
spendingKeyHex, spendingKeyHex,
inputAdditionRecords, inputAdditionRecords,
// pass minBlockHeight from args if provided, default 0
typeof args?.minBlockHeight === 'number' && Number.isFinite(args.minBlockHeight) typeof args?.minBlockHeight === 'number' && Number.isFinite(args.minBlockHeight)
? args.minBlockHeight ? args.minBlockHeight
: 0, : 0,