@@ -21,6 +21,7 @@ angular.module('myApp.services')
2121 var pendingTopMsgs = { }
2222 var sendFilePromise = $q . when ( )
2323 var tempID = - 1
24+ var tempFinalizeCallbacks = { }
2425
2526 var dialogsIndex = SearchIndexManager . createIndex ( )
2627 var cachedResults = { query : false }
@@ -994,8 +995,7 @@ angular.module('myApp.services')
994995 }
995996
996997 function canEditMessage ( messageID ) {
997- if ( messageID <= 0 ||
998- ! messagesStorage [ messageID ] ) {
998+ if ( ! messagesStorage [ messageID ] ) {
999999 return false
10001000 }
10011001 var message = messagesStorage [ messageID ]
@@ -2311,12 +2311,25 @@ angular.module('myApp.services')
23112311 delete messagesForHistory [ tempID ]
23122312 delete messagesStorage [ tempID ]
23132313
2314+ finalizePendingMessageCallbacks ( tempID , finalMessage . mid )
2315+
23142316 return message
23152317 }
23162318
23172319 return false
23182320 }
23192321
2322+ function finalizePendingMessageCallbacks ( tempID , mid ) {
2323+ var callbacks = tempFinalizeCallbacks [ tempID ]
2324+ console . warn ( dT ( ) , callbacks , tempID )
2325+ if ( callbacks !== undefined ) {
2326+ angular . forEach ( callbacks , function ( callback ) {
2327+ callback ( mid )
2328+ } )
2329+ delete tempFinalizeCallbacks [ tempID ]
2330+ }
2331+ }
2332+
23202333 function getInputEntities ( entities ) {
23212334 var sendEntites = angular . copy ( entities )
23222335 angular . forEach ( sendEntites , function ( entity ) {
@@ -2333,6 +2346,21 @@ angular.module('myApp.services')
23332346 ! canEditMessage ( messageID ) ) {
23342347 return $q . reject ( )
23352348 }
2349+ if ( messageID < 0 ) {
2350+ if ( tempFinalizeCallbacks [ messageID ] === undefined ) {
2351+ tempFinalizeCallbacks [ messageID ] = { }
2352+ }
2353+ var deferred = $q . defer ( )
2354+ tempFinalizeCallbacks [ messageID ] . edit = function ( mid ) {
2355+ console . log ( 'invoke callback' , mid )
2356+ editMessage ( mid , text ) . then ( function ( result ) {
2357+ deferred . resolve ( result )
2358+ } , function ( error ) {
2359+ deferred . reject ( error )
2360+ } )
2361+ }
2362+ return deferred . promise
2363+ }
23362364 var entities = [ ]
23372365 text = RichTextProcessor . parseMarkdown ( text , entities )
23382366
@@ -3126,6 +3154,8 @@ angular.module('myApp.services')
31263154 msgs [ tempID ] = true
31273155
31283156 $rootScope . $broadcast ( 'history_delete' , { peerID : peerID , msgs : msgs } )
3157+
3158+ finalizePendingMessageCallbacks ( tempID , finalMessage . mid )
31293159 } else {
31303160 pendingByMessageID [ mid ] = randomID
31313161 }
0 commit comments