Problem:
When a token has no value on coinmarketcap, it's current value is simply ignored and set to "0" in the portfolio. As a result, the portfolio's value is wrong. Setting "worth" value in transaction doesn't work as the coin has not been sold yet.
Suggestion:
Allowing user to set the price per unit at a fixed moment in time will mitigate the issue. At the moment this make the portfolio value totally useless. With a fixed price, it will just not be up to date. Of course user should be warned:
"you have set some token values manually, current value of the portfolio may differ from real time value"
Another option that may possible would be to fallback on pancake swap API. For example, this is the IBAT endpoint to get current price (no key needed):
Current price is trivial to extract. (But API might have some undocumented limitations.)
Note:
Setting worth price in Koinly works by putting the value of the total you own, which is convenient when you buy from FIAT because you know that amount, but not when you send it because you need to multiply the current value per unit with your amount (so a calculator will usually be needed).
In the case of the portfolio, price per unit seems easier for the user, as it will avoid calculation.