#2 pending
Kenny Richards

Reflector Input Validation (Stupid User Problem)

Reported by Kenny Richards | August 21st, 2015 @ 10:49 PM

The reflector input allows strings like "REF001C", which won't actually work. Since Icom has taught many users that reflector names are a single string (since they need to be "REF001CL"), people may not realize they need to have a space between the reflector name and port. (i.e. me! :-)

Options that might help:
1) If you are unable to connect successful, provide a pop-up to the user. You can be much more specific about the format with the additional space of the pop up. Probably the lack of any error message was the biggest issue for me, since I didn't realize it was an input problem. I was trying to figure out if I had a networking problem initially.

2) Just munge the field for the user, if it doesn't initially work. So if "REF001C" failed to connect, try "REF001 C" for them.

3) Do little deeper inspection, since you know roughly what most reflectors strings will look like. So if user provides "REFXXXA", pretty good guess they meant "REFXXX A".

Comments and changes to this ticket

  • mcdermj (at xenotropic)

    mcdermj (at xenotropic) August 22nd, 2015 @ 05:55 AM

    • State changed from “new” to “open”

    Doing a list, as mentioned in your accompanying e-mail, isn't practical because there are over 500 link destinations in D-Plus alone. Remember that repeaters are a valid destination as well as reflectors. If you combine this with the fact that every reflector/repeater destination will have at least four modules (A-D for D-Plus and D-Extra, I believe that DCS supports A-Z), that's a long list. Even if I were to make two dropdown boxes, which is sort of a weird interface, that's still a list that may break 1000 entries. That's not fun to sort through.

    In addition I may have eventually have a link driver that doesn't/can't have a list of valid destinations. The link drivers are abstracted and there's a standard interface to which they have to conform, but the data engine doesn't necessarily really care which one is active.

    I think 2 and 3 are trying to second guess users too much. I would have to have each of the drivers try to munge the destination to try to auto-correct it. Trying to divine user intent is an issue.

    I think a variation on 1 is the right way to go, but it should be done at the time the destination is entered into the favorites list. We can ask the link drivers at this point in time if anyone will handle the link. If not, we know it's not a proper destination. This is what happens when you link anyways. The data engine asks each driver whether it can handle the destination and the first one to say "yes" gets to handle the link.

    The only danger in doing it this way is that the D-Plus list is dynamic. When the authenticator logs into Robin's server, it's given a list of D-Plus destinations. If the user, for whatever reason, is not authenticated, you won't be able to add D-Plus destinations. But, we wouldn't re-check the destination list, so you could get old entries on there that may not be able to be currently linked. As well, there might be a reflector that once existed but doesn't anymore.

    I guess this militates towards doing that validation both when connecting to and entering reflectors.

  • mcdermj (at xenotropic)

    mcdermj (at xenotropic) August 22nd, 2015 @ 07:51 AM

    • State changed from “open” to “pending”

    Added functionality described above as a variation of #1. Reflectors will be checked when they go into the list and when we link. There's a modal sheet that will drop down to inform the user of the error.

    Fixes included in v1.0.1d99 / git 422efe6.

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

A D-STAR reflector client.

Shared Ticket Bins