Bot access for geo & contact
This commit is contained in:
parent
6e27162ed1
commit
172d977dcd
@ -1804,9 +1804,48 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
if (!replyKeyboard) {
|
if (!replyKeyboard) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AppMessagesManager.sendText(peerID, button.text, {
|
switch (button._) {
|
||||||
replyToMsgID: peerID < 0 && replyKeyboard.mid
|
case 'keyboardButtonRequestPhone':
|
||||||
});
|
ErrorService.confirm({type: 'BOT_ACCESS_PHONE'}).then(function () {
|
||||||
|
var user = AppUsersManager.getSelf();
|
||||||
|
AppMessagesManager.sendOther(peerID, {
|
||||||
|
_: 'inputMediaContact',
|
||||||
|
phone_number: user.phone,
|
||||||
|
first_name: user.first_name,
|
||||||
|
last_name: user.last_name
|
||||||
|
}, {
|
||||||
|
replyToMsgID: peerID < 0 && replyKeyboard.mid
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'keyboardButtonRequestGeoLocation':
|
||||||
|
ErrorService.confirm({type: 'BOT_ACCESS_GEO'}).then(function () {
|
||||||
|
return GeoLocationManager.getPosition().then(function (coords) {
|
||||||
|
AppMessagesManager.sendOther(peerID, {
|
||||||
|
_: 'inputMediaGeoPoint',
|
||||||
|
geo_point: {
|
||||||
|
_: 'inputGeoPoint',
|
||||||
|
'lat': coords['lat'],
|
||||||
|
'long': coords['long']
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
replyToMsgID: peerID < 0 && replyKeyboard.mid
|
||||||
|
});
|
||||||
|
}, function (error) {
|
||||||
|
ErrorService.alert(
|
||||||
|
_('error_modal_password_success_title_raw'),
|
||||||
|
_('error_modal_password_success_descripion_raw')
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
AppMessagesManager.sendText(peerID, button.text, {
|
||||||
|
replyToMsgID: peerID < 0 && replyKeyboard.mid
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.$on('history_reload', function (e, updPeerID) {
|
$scope.$on('history_reload', function (e, updPeerID) {
|
||||||
@ -2479,7 +2518,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
|
|
||||||
var inlineUsernameRegex = /^@([a-zA-Z\d_]{1,32})( | )([\s\S]*)$/;
|
var inlineUsernameRegex = /^@([a-zA-Z\d_]{1,32})( | )([\s\S]*)$/;
|
||||||
var getInlineResultsTO = false;
|
var getInlineResultsTO = false;
|
||||||
var lastInlineBotID = false;
|
var lastInlineBot = false;
|
||||||
var jump = 0;
|
var jump = 0;
|
||||||
|
|
||||||
function checkInlinePattern (message) {
|
function checkInlinePattern (message) {
|
||||||
@ -2499,12 +2538,18 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var username = matches[1];
|
var username = matches[1];
|
||||||
|
var inlineBotPromise;
|
||||||
$scope.draftMessage.inlineProgress = true;
|
$scope.draftMessage.inlineProgress = true;
|
||||||
AppPeersManager.resolveInlineMention(username).then(function (inlineBot) {
|
if (lastInlineBot && lastInlineBot.username == username) {
|
||||||
|
inlineBotPromise = $q.when(lastInlineBot);
|
||||||
|
} else {
|
||||||
|
inlineBotPromise = AppInlineBotsManager.resolveInlineMention(username);
|
||||||
|
}
|
||||||
|
inlineBotPromise.then(function (inlineBot) {
|
||||||
if (curJump != jump) {
|
if (curJump != jump) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lastInlineBotID = inlineBot.id;
|
lastInlineBot = inlineBot;
|
||||||
$scope.$broadcast('inline_placeholder', {
|
$scope.$broadcast('inline_placeholder', {
|
||||||
prefix: '@' + username + matches[2],
|
prefix: '@' + username + matches[2],
|
||||||
placeholder: inlineBot.placeholder
|
placeholder: inlineBot.placeholder
|
||||||
@ -2514,7 +2559,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
}
|
}
|
||||||
getInlineResultsTO = $timeout(function () {
|
getInlineResultsTO = $timeout(function () {
|
||||||
var query = RichTextProcessor.parseEmojis(matches[3]);
|
var query = RichTextProcessor.parseEmojis(matches[3]);
|
||||||
AppInlineBotsManager.getInlineResults($scope.curDialog.peerID, inlineBot.id, query, '').then(function (botResults) {
|
AppInlineBotsManager.getInlineResults($scope.curDialog.peerID, inlineBot.id, query, inlineBot.geo, '').then(function (botResults) {
|
||||||
getInlineResultsTO = false;
|
getInlineResultsTO = false;
|
||||||
if (curJump != jump) {
|
if (curJump != jump) {
|
||||||
return;
|
return;
|
||||||
@ -2527,7 +2572,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
delete $scope.draftMessage.inlineProgress;
|
delete $scope.draftMessage.inlineProgress;
|
||||||
});
|
});
|
||||||
}, 500);
|
}, 500);
|
||||||
}, function () {
|
}, function (error) {
|
||||||
$scope.$broadcast('inline_results', false);
|
$scope.$broadcast('inline_results', false);
|
||||||
delete $scope.draftMessage.inlineProgress;
|
delete $scope.draftMessage.inlineProgress;
|
||||||
});
|
});
|
||||||
@ -2614,7 +2659,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (qID.substr(0, 11) == '_switch_pm_') {
|
if (qID.substr(0, 11) == '_switch_pm_') {
|
||||||
var botID = lastInlineBotID;
|
var botID = lastInlineBot.id;
|
||||||
var startParam = qID.substr(11);
|
var startParam = qID.substr(11);
|
||||||
return AppInlineBotsManager.switchToPM($scope.curDialog.peerID, botID, startParam);
|
return AppInlineBotsManager.switchToPM($scope.curDialog.peerID, botID, startParam);
|
||||||
}
|
}
|
||||||
|
@ -1084,6 +1084,42 @@ angular.module('izhukov.utils', [])
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.service('GeoLocationManager', function ($q) {
|
||||||
|
|
||||||
|
var lastCoords = false;
|
||||||
|
|
||||||
|
function isAvailable() {
|
||||||
|
return navigator.geolocation !== undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPosition(force) {
|
||||||
|
if (!force && lastCoords) {
|
||||||
|
return $q.when(lastCoords);
|
||||||
|
}
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return $q.reject();
|
||||||
|
}
|
||||||
|
var deferred = $q.defer();
|
||||||
|
navigator.geolocation.getCurrentPosition(function (position) {
|
||||||
|
lastCoords = {
|
||||||
|
lat: position.coords.latitude,
|
||||||
|
long: position.coords.longitude
|
||||||
|
};
|
||||||
|
deferred.resolve(lastCoords);
|
||||||
|
}, function (error) {
|
||||||
|
deferred.reject(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
return deferred.promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
getPosition: getPosition,
|
||||||
|
isAvailable: isAvailable
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
.service('AppRuntimeManager', function ($window) {
|
.service('AppRuntimeManager', function ($window) {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -1771,7 +1807,7 @@ angular.module('izhukov.utils', [])
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ TLSerialization.prototype.storeLong = function (sLong, field) {
|
|||||||
this.writeInt(intToUint(divRem[0].intValue()), (field || '') + ':long[high]');
|
this.writeInt(intToUint(divRem[0].intValue()), (field || '') + ':long[high]');
|
||||||
};
|
};
|
||||||
|
|
||||||
TLSerialization.prototype.storeDouble = function (f) {
|
TLSerialization.prototype.storeDouble = function (f, field) {
|
||||||
var buffer = new ArrayBuffer(8);
|
var buffer = new ArrayBuffer(8);
|
||||||
var intView = new Int32Array(buffer);
|
var intView = new Int32Array(buffer);
|
||||||
var doubleView = new Float64Array(buffer);
|
var doubleView = new Float64Array(buffer);
|
||||||
|
@ -1351,6 +1351,7 @@ angular.module('myApp.services')
|
|||||||
random_id: randomIDS,
|
random_id: randomIDS,
|
||||||
reply_to_msg_id: replyToMsgID,
|
reply_to_msg_id: replyToMsgID,
|
||||||
via_bot_id: options.viaBotID,
|
via_bot_id: options.viaBotID,
|
||||||
|
reply_markup: options.reply_markup,
|
||||||
entities: entities,
|
entities: entities,
|
||||||
views: asChannel && 1,
|
views: asChannel && 1,
|
||||||
pending: true
|
pending: true
|
||||||
@ -1658,10 +1659,6 @@ angular.module('myApp.services')
|
|||||||
var fromID = AppUsersManager.getSelf().id;
|
var fromID = AppUsersManager.getSelf().id;
|
||||||
var media;
|
var media;
|
||||||
switch (inputMedia._) {
|
switch (inputMedia._) {
|
||||||
case 'inputMediaContact':
|
|
||||||
media = angular.extend({}, inputMedia, {_: 'messageMediaContact'});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'inputMediaPhoto':
|
case 'inputMediaPhoto':
|
||||||
media = {
|
media = {
|
||||||
_: 'messageMediaPhoto',
|
_: 'messageMediaPhoto',
|
||||||
@ -1682,6 +1679,42 @@ angular.module('myApp.services')
|
|||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'inputMediaContact':
|
||||||
|
media = {
|
||||||
|
_: 'messageMediaContact',
|
||||||
|
phone_number: phone_number,
|
||||||
|
first_name: first_name,
|
||||||
|
last_name: last_name,
|
||||||
|
user_id: 0
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'inputMediaGeoPoint':
|
||||||
|
media = {
|
||||||
|
_: 'messageMediaGeo',
|
||||||
|
geo: {
|
||||||
|
_: 'geoPoint',
|
||||||
|
'lat': inputMedia.geo_point['lat'],
|
||||||
|
'long': inputMedia.geo_point['long']
|
||||||
|
}
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'inputMediaVenue':
|
||||||
|
media = {
|
||||||
|
_: 'messageMediaVenue',
|
||||||
|
geo: {
|
||||||
|
_: 'geoPoint',
|
||||||
|
'lat': inputMedia.geo_point['lat'],
|
||||||
|
'long': inputMedia.geo_point['long']
|
||||||
|
},
|
||||||
|
title: inputMedia.title,
|
||||||
|
address: inputMedia.address,
|
||||||
|
provider: inputMedia.provider,
|
||||||
|
venue_id: inputMedia.venue_id
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
case 'messageMediaPending':
|
case 'messageMediaPending':
|
||||||
media = inputMedia;
|
media = inputMedia;
|
||||||
break;
|
break;
|
||||||
@ -1719,6 +1752,7 @@ angular.module('myApp.services')
|
|||||||
random_id: randomIDS,
|
random_id: randomIDS,
|
||||||
reply_to_msg_id: replyToMsgID,
|
reply_to_msg_id: replyToMsgID,
|
||||||
via_bot_id: options.viaBotID,
|
via_bot_id: options.viaBotID,
|
||||||
|
reply_markup: options.reply_markup,
|
||||||
views: asChannel && 1,
|
views: asChannel && 1,
|
||||||
pending: true
|
pending: true
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
||||||
|
|
||||||
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, qSync, MtpApiManager, RichTextProcessor, ErrorService, Storage, _) {
|
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, qSync, MtpApiManager, RichTextProcessor, Storage, _) {
|
||||||
var users = {},
|
var users = {},
|
||||||
usernames = {},
|
usernames = {},
|
||||||
userAccess = {},
|
userAccess = {},
|
||||||
@ -960,24 +960,6 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolveInlineMention (username) {
|
|
||||||
return resolveUsername(username).then(function (peerID) {
|
|
||||||
if (peerID > 0) {
|
|
||||||
var bot = AppUsersManager.getUser(peerID);
|
|
||||||
if (bot.pFlags.bot && bot.bot_inline_placeholder !== undefined) {
|
|
||||||
return qSync.when({
|
|
||||||
id: peerID,
|
|
||||||
placeholder: bot.bot_inline_placeholder
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $q.reject();
|
|
||||||
}, function (error) {
|
|
||||||
error.handled = true;
|
|
||||||
return $q.reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPeerID (peerString) {
|
function getPeerID (peerString) {
|
||||||
if (angular.isObject(peerString)) {
|
if (angular.isObject(peerString)) {
|
||||||
return peerString.user_id
|
return peerString.user_id
|
||||||
@ -1024,7 +1006,6 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
getPeer: getPeer,
|
getPeer: getPeer,
|
||||||
getPeerPhoto: getPeerPhoto,
|
getPeerPhoto: getPeerPhoto,
|
||||||
resolveUsername: resolveUsername,
|
resolveUsername: resolveUsername,
|
||||||
resolveInlineMention: resolveInlineMention,
|
|
||||||
isChannel: isChannel,
|
isChannel: isChannel,
|
||||||
isMegagroup: isMegagroup,
|
isMegagroup: isMegagroup,
|
||||||
isBot: isBot
|
isBot: isBot
|
||||||
@ -2402,19 +2383,20 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
.service('AppInlineBotsManager', function ($rootScope, Storage, MtpApiManager, AppMessagesManager, AppDocsManager, AppPhotosManager, RichTextProcessor, AppUsersManager, AppPeersManager, PeersSelectService) {
|
.service('AppInlineBotsManager', function (qSync, $q, $rootScope, Storage, ErrorService, MtpApiManager, AppMessagesManager, AppDocsManager, AppPhotosManager, RichTextProcessor, AppUsersManager, AppPeersManager, PeersSelectService, GeoLocationManager) {
|
||||||
|
|
||||||
var inlineResults = {};
|
var inlineResults = {};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
resolveInlineMention: resolveInlineMention,
|
||||||
|
getPopularBots: getPopularBots,
|
||||||
sendInlineResult: sendInlineResult,
|
sendInlineResult: sendInlineResult,
|
||||||
|
getInlineResults: getInlineResults,
|
||||||
regroupWrappedResults: regroupWrappedResults,
|
regroupWrappedResults: regroupWrappedResults,
|
||||||
switchToPM: switchToPM,
|
switchToPM: switchToPM,
|
||||||
checkSwitchReturn: checkSwitchReturn,
|
checkSwitchReturn: checkSwitchReturn,
|
||||||
switchInlineButtonClick: switchInlineButtonClick,
|
switchInlineButtonClick: switchInlineButtonClick,
|
||||||
callbackButtonClick: callbackButtonClick,
|
callbackButtonClick: callbackButtonClick
|
||||||
getInlineResults: getInlineResults,
|
|
||||||
getPopularBots: getPopularBots
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function getPopularBots () {
|
function getPopularBots () {
|
||||||
@ -2468,12 +2450,46 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getInlineResults (peerID, botID, query, offset) {
|
function resolveInlineMention (username) {
|
||||||
|
return AppPeersManager.resolveUsername(username).then(function (peerID) {
|
||||||
|
if (peerID > 0) {
|
||||||
|
var bot = AppUsersManager.getUser(peerID);
|
||||||
|
if (bot.pFlags.bot && bot.bot_inline_placeholder !== undefined) {
|
||||||
|
var resolvedBot = {
|
||||||
|
username: username,
|
||||||
|
id: peerID,
|
||||||
|
placeholder: bot.bot_inline_placeholder
|
||||||
|
};
|
||||||
|
if (bot.pFlags.bot_inline_geo) {
|
||||||
|
return checkGeoLocationAccess(peerID).then(function () {
|
||||||
|
// console.log('bot has access');
|
||||||
|
return GeoLocationManager.getPosition().then(function (coords) {
|
||||||
|
resolvedBot.geo = coords;
|
||||||
|
console.log('got position', resolvedBot);
|
||||||
|
return qSync.when(resolvedBot);
|
||||||
|
});
|
||||||
|
})['catch'](function () {
|
||||||
|
console.log('resolve', resolvedBot);
|
||||||
|
return qSync.when(resolvedBot);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return qSync.when(resolvedBot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $q.reject();
|
||||||
|
}, function (error) {
|
||||||
|
error.handled = true;
|
||||||
|
return $q.reject(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInlineResults (peerID, botID, query, geo, offset) {
|
||||||
return MtpApiManager.invokeApi('messages.getInlineBotResults', {
|
return MtpApiManager.invokeApi('messages.getInlineBotResults', {
|
||||||
flags: 0,
|
flags: 0 | (geo ? 1 : 0),
|
||||||
bot: AppUsersManager.getUserInput(botID),
|
bot: AppUsersManager.getUserInput(botID),
|
||||||
peer: AppPeersManager.getInputPeerByID(peerID),
|
peer: AppPeersManager.getInputPeerByID(peerID),
|
||||||
query: query,
|
query: query,
|
||||||
|
geo_point: geo && {_: 'inputGeoPoint', lat: geo['lat'], long: geo['long']},
|
||||||
offset: offset
|
offset: offset
|
||||||
}, {timeout: 1, stopTime: -1, noErrorBox: true}).then(function(botResults) {
|
}, {timeout: 1, stopTime: -1, noErrorBox: true}).then(function(botResults) {
|
||||||
var queryID = botResults.query_id;
|
var queryID = botResults.query_id;
|
||||||
@ -2661,31 +2677,72 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
options.viaBotID = inlineResult.botID;
|
options.viaBotID = inlineResult.botID;
|
||||||
options.queryID = queryID;
|
options.queryID = queryID;
|
||||||
options.resultID = resultID;
|
options.resultID = resultID;
|
||||||
|
if (inlineResult.send_message.reply_markup) {
|
||||||
|
options.reply_markup = inlineResult.send_message.reply_markup;
|
||||||
|
}
|
||||||
|
|
||||||
if (inlineResult.send_message._ == 'botInlineMessageText') {
|
if (inlineResult.send_message._ == 'botInlineMessageText') {
|
||||||
options.entities = inlineResult.send_message.entities;
|
options.entities = inlineResult.send_message.entities;
|
||||||
AppMessagesManager.sendText(peerID, inlineResult.send_message.message, options);
|
AppMessagesManager.sendText(peerID, inlineResult.send_message.message, options);
|
||||||
} else {
|
} else {
|
||||||
var caption = '';
|
var caption = '';
|
||||||
if (inlineResult.send_message._ == 'botInlineMessageMediaAuto') {
|
|
||||||
caption = inlineResult.send_message.caption;
|
|
||||||
}
|
|
||||||
var inputMedia = false;
|
var inputMedia = false;
|
||||||
if (inlineResult._ == 'botInlineMediaResultDocument') {
|
switch (inlineResult.send_message._) {
|
||||||
var doc = inlineResult.document;
|
case 'botInlineMessageMediaAuto':
|
||||||
inputMedia = {
|
caption = inlineResult.send_message.caption;
|
||||||
_: 'inputMediaDocument',
|
if (inlineResult._ == 'botInlineMediaResult') {
|
||||||
id: {_: 'inputDocument', id: doc.id, access_hash: doc.access_hash},
|
var doc = inlineResult.document;
|
||||||
caption: caption
|
var photo = inlineResult.photo;
|
||||||
};
|
if (doc) {
|
||||||
}
|
inputMedia = {
|
||||||
else if (inlineResult._ == 'botInlineMediaResultPhoto') {
|
_: 'inputMediaDocument',
|
||||||
var photo = inlineResult.photo;
|
id: {_: 'inputDocument', id: doc.id, access_hash: doc.access_hash},
|
||||||
inputMedia = {
|
caption: caption
|
||||||
_: 'inputMediaPhoto',
|
};
|
||||||
id: {_: 'inputPhoto', id: photo.id, access_hash: photo.access_hash},
|
} else {
|
||||||
caption: caption
|
inputMedia = {
|
||||||
};
|
_: 'inputMediaPhoto',
|
||||||
|
id: {_: 'inputPhoto', id: photo.id, access_hash: photo.access_hash},
|
||||||
|
caption: caption
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'botInlineMessageMediaGeo':
|
||||||
|
inputMedia = {
|
||||||
|
_: 'inputMediaGeoPoint',
|
||||||
|
geo_point: {
|
||||||
|
_: 'inputGeoPoint',
|
||||||
|
'lat': inlineResult.send_message.geo['lat'],
|
||||||
|
'long': inlineResult.send_message.geo['long']
|
||||||
|
}
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'botInlineMessageMediaVenue':
|
||||||
|
inputMedia = {
|
||||||
|
_: 'inputMediaVenue',
|
||||||
|
geo_point: {
|
||||||
|
_: 'inputGeoPoint',
|
||||||
|
'lat': inlineResult.send_message.geo['lat'],
|
||||||
|
'long': inlineResult.send_message.geo['long']
|
||||||
|
},
|
||||||
|
title: title,
|
||||||
|
address: address,
|
||||||
|
provider: provider,
|
||||||
|
venue_id: venue_id
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'botInlineMessageMediaContact':
|
||||||
|
inputMedia = {
|
||||||
|
_: 'inputMediaContact',
|
||||||
|
phone_number: inlineResult.send_message.phone_number,
|
||||||
|
first_name: inlineResult.send_message.first_name,
|
||||||
|
last_name: inlineResult.send_message.last_name
|
||||||
|
};
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!inputMedia) {
|
if (!inputMedia) {
|
||||||
inputMedia = {
|
inputMedia = {
|
||||||
@ -2700,6 +2757,28 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkGeoLocationAccess(botID) {
|
||||||
|
var key = 'bot_access_geo' + botID;
|
||||||
|
return Storage.get(key).then(function (geoAccess) {
|
||||||
|
if (geoAccess && geoAccess.granted) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return ErrorService.confirm({
|
||||||
|
type: 'BOT_ACCESS_GEO'
|
||||||
|
}).then(function () {
|
||||||
|
var setHash = {};
|
||||||
|
setHash[key] = {granted: true, time: tsNow()};
|
||||||
|
Storage.set(setHash);
|
||||||
|
return true;
|
||||||
|
}, function () {
|
||||||
|
var setHash = {};
|
||||||
|
setHash[key] = {denied: true, time: tsNow()};
|
||||||
|
Storage.set(setHash);
|
||||||
|
return $q.reject();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
.service('ApiUpdatesManager', function ($rootScope, MtpNetworkerFactory, AppUsersManager, AppChatsManager, AppPeersManager, MtpApiManager) {
|
.service('ApiUpdatesManager', function ($rootScope, MtpNetworkerFactory, AppUsersManager, AppChatsManager, AppPeersManager, MtpApiManager) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user