@@ -305,20 +305,19 @@ final class ImportMagicLinkController {
305
305
}
306
306
307
307
private func makeTokenHolder( _ bytes32Tokens: [ String ] , _ contractAddress: AlphaWallet . Address ) {
308
- assetDefinitionStore. fetchXML ( forContract: contractAddress, server: server, useCacheAndFetch: true ) { [ weak self, session] _ in
309
- guard let strongSelf = self else { return }
310
-
311
- func makeTokenHolder( name: String , symbol: String , type: TokenType ? = nil ) {
312
- strongSelf. makeTokenHolderImpl ( name: name, symbol: symbol, type: type, bytes32Tokens: bytes32Tokens, contractAddress: contractAddress)
313
- strongSelf. updateTokenFields ( )
308
+ Task { @MainActor in
309
+ _ = await assetDefinitionStore. fetchXMLAsync ( forContract: contractAddress, server: server, useCacheAndFetch: true )
310
+ func makeTokenHolder( name: String , symbol: String , type: TokenType ? = nil ) async {
311
+ await makeTokenHolderImpl ( name: name, symbol: symbol, type: type, bytes32Tokens: bytes32Tokens, contractAddress: contractAddress)
312
+ updateTokenFields ( )
314
313
}
315
314
316
- if let existingToken = strongSelf . tokensService. tokenViewModel ( for: contractAddress, server: strongSelf . server) {
317
- let name = XMLHandler ( token: existingToken, assetDefinitionStore: strongSelf . assetDefinitionStore) . getLabel ( fallback: existingToken. name)
318
- makeTokenHolder ( name: name, symbol: existingToken. symbol)
315
+ if let existingToken = await tokensService. tokenViewModel ( for: contractAddress, server: server) {
316
+ let name = XMLHandler ( token: existingToken, assetDefinitionStore: assetDefinitionStore) . getLabel ( fallback: existingToken. name)
317
+ await makeTokenHolder ( name: name, symbol: existingToken. symbol)
319
318
} else {
320
319
let localizedTokenTypeName = R . string. localizable. tokensTitlecase ( )
321
- makeTokenHolder ( name: localizedTokenTypeName, symbol: " " )
320
+ await makeTokenHolder ( name: localizedTokenTypeName, symbol: " " )
322
321
323
322
let getContractName = session. tokenProvider. getContractName ( for: contractAddress)
324
323
let getContractSymbol = session. tokenProvider. getContractSymbol ( for: contractAddress)
@@ -328,15 +327,21 @@ final class ImportMagicLinkController {
328
327
. sinkAsync ( receiveCompletion: { _ in
329
328
//no-op
330
329
} , receiveValue: { name, symbol, type in
331
- makeTokenHolder ( name: name, symbol: symbol, type: type)
330
+ Task { @MainActor in
331
+ await makeTokenHolder ( name: name, symbol: symbol, type: type)
332
+ }
332
333
} )
333
334
}
334
335
}
335
336
}
336
337
337
- private func makeTokenHolderImpl( name: String , symbol: String , type: TokenType ? = nil , bytes32Tokens: [ String ] , contractAddress: AlphaWallet . Address ) {
338
+ private func makeTokenHolderImpl( name: String , symbol: String , type: TokenType ? = nil , bytes32Tokens: [ String ] , contractAddress: AlphaWallet . Address ) async {
338
339
//TODO pass in the wallet instead
339
- guard let tokenType = type ?? ( tokensService. tokenViewModel ( for: contractAddress, server: server) ? . type) else { return }
340
+ var tokenType1 : TokenType ? = type
341
+ if tokenType1 == nil {
342
+ tokenType1 = await tokensService. tokenViewModel ( for: contractAddress, server: server) ? . type
343
+ }
344
+ guard let tokenType = tokenType1 else { return }
340
345
var tokens = [ TokenScript . Token] ( )
341
346
let xmlHandler = XMLHandler ( contract: contractAddress, tokenType: tokenType, assetDefinitionStore: assetDefinitionStore)
342
347
for i in 0 ..< bytes32Tokens. count {
0 commit comments