Your visibility logic is fine, but using toString() on your @Serializable objects can return unexpected values. Instead, define explicit route strings for your destinations and use those for consistent navigation comparisons.
Also, instead of using toString() you can replace it with decoding/encoding:
https://kotlinlang.org/docs/serialization.html#serialize-and-deserialize-json