@@ -7,6 +7,7 @@ var MapScreen = (function() {
77 'use strict' ;
88
99 var t = Helpers . t ;
10+ var pendingTravel = null ;
1011
1112 /** Region emoji icons */
1213 var REGION_ICONS = {
@@ -29,7 +30,13 @@ var MapScreen = (function() {
2930 var user = VizAccount . getCurrentUser ( ) ;
3031 var state = StateEngine . getState ( ) ;
3132 var character = state . characters ? state . characters [ user ] : null ;
32- var currentZone = character ? character . currentZone : 'commons_first_light' ;
33+ var confirmedZone = character ? character . currentZone : 'commons_first_light' ;
34+ if ( pendingTravel && pendingTravel . account === user && pendingTravel . to === confirmedZone ) {
35+ pendingTravel = null ;
36+ }
37+ var currentZone = ( pendingTravel && pendingTravel . account === user )
38+ ? pendingTravel . to
39+ : confirmedZone ;
3340 var myGuild = null ;
3441 if ( user && state . guilds ) {
3542 myGuild = GuildSystem . findGuildByMember ( state . guilds , user ) ;
@@ -140,6 +147,8 @@ var MapScreen = (function() {
140147 html += 'aria-label="' + t ( 'map_travel_to' ) + ' ' + region . name + '">' ;
141148 html += '\uD83D\uDEB6 ' + t ( 'map_travel' ) + ' (' + t ( 'map_travel_cost' ) + ')' ;
142149 html += '</button>' ;
150+ } else if ( pendingTravel && pendingTravel . account === user && regionId === pendingTravel . to ) {
151+ html += '<div class="region-benefits">⏳ ' + t ( 'loading' ) + '</div>' ;
143152 }
144153
145154 html += '</section>' ;
@@ -194,6 +203,7 @@ var MapScreen = (function() {
194203 if ( err ) {
195204 Toast . error ( t ( 'error_network' ) ) ;
196205 } else {
206+ pendingTravel = { account : user , from : character ? character . currentZone : '' , to : regionId , at : Date . now ( ) } ;
197207 Toast . success ( t ( 'map_traveled' ) + ' ' + region . name ) ;
198208 SoundManager . play ( 'transition' ) ;
199209 render ( ) ;
0 commit comments