Groups.Add
is async, so you need to await it if you want to use the group in the same method (as stated in the documentation):
public async Task JoinGroup(string groupName, string userFullName)
{
await Groups.Add(Context.ConnectionId, groupName);
// Send data back to everyone including the caller
Clients.Group(groupName).dataChanged(...);
}