Browse Source

Update 2016-12-15T19:10:21.831Z

gh-pages
Igor Zhukov 8 years ago
parent
commit
834d521153
  1. 5
      css/app.css
  2. 5
      css/badbrowser.css
  3. 68
      js/app.js
  4. 324
      js/lib/push_worker.js
  5. 10
      js/locales/de-de.json
  6. 4
      js/locales/en-us.json
  7. 4
      js/locales/es-es.json
  8. 14
      js/locales/it-it.json
  9. 12
      js/locales/nl-nl.json
  10. 4
      js/locales/pt-br.json
  11. 4
      js/locales/ru-ru.json
  12. 2
      service_worker.js
  13. 28
      webogram.appcache

5
css/app.css

@ -1379,9 +1379,7 @@ i.icon-verified{display:inline-block;width:17px;height:17px;vertical-align:text-
.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:0;background-color:#6490b1} .im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:0;background-color:#6490b1}
.im_dialogs_scrollable_wrap .active a.im_dialog:hover,.im_dialogs_scrollable_wrap .active a.im_dialog_selected{background-color:#6490b1} .im_dialogs_scrollable_wrap .active a.im_dialog:hover,.im_dialogs_scrollable_wrap .active a.im_dialog_selected{background-color:#6490b1}
.im_dialogs_modal_list{padding-top:10px} .im_dialogs_modal_list{padding-top:10px}
.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word} .im_dialog_message_wrap{word-wrap:break-word}
.im_dialog_message_typing,.im_dialog_message_wtyping .im_dialog_message_notyping{display:none}
.im_dialog_message_wtyping .im_dialog_message_typing{display:block}
a.im_dialog .im_dialog_chat_from_wrap,a.im_dialog .im_short_message_media,a.im_dialog .im_short_message_service{color:#3a6d99} a.im_dialog .im_dialog_chat_from_wrap,a.im_dialog .im_short_message_media,a.im_dialog .im_short_message_service{color:#3a6d99}
a.im_dialog .im_short_message_text{color:grey} a.im_dialog .im_short_message_text{color:grey}
a.im_dialog .im_dialog_draft_from{color:#c05f5a} a.im_dialog .im_dialog_draft_from{color:#c05f5a}
@ -1402,6 +1400,7 @@ a.im_dialog:hover .im_dialog_unread,a.im_dialog_selected .im_dialog_unread{backg
a.im_dialog:hover .im_dialog_date,a.im_dialog_selected .im_dialog_date{color:#91a6ba} a.im_dialog:hover .im_dialog_date,a.im_dialog_selected .im_dialog_date{color:#91a6ba}
.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date,.active a.im_dialog_selected .im_dialog_date{color:#b8d1e4} .active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date,.active a.im_dialog_selected .im_dialog_date{color:#b8d1e4}
.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis} .im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.im_dialog_message_wrap{height:44px;overflow:hidden}
.im_dialog_message{color:grey} .im_dialog_message{color:grey}
.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background-image:url(../img/icons/IconsetW.png);background-repeat:no-repeat;background-position:-17px -444px} .icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background-image:url(../img/icons/IconsetW.png);background-repeat:no-repeat;background-position:-17px -444px}
.is_2x .icon-caret{background-image:url(../img/icons/IconsetW_2x.png);background-size:42px 1171px} .is_2x .icon-caret{background-image:url(../img/icons/IconsetW_2x.png);background-size:42px 1171px}

5
css/badbrowser.css

@ -1332,9 +1332,7 @@ i.icon-verified{display:inline-block;width:17px;height:17px;vertical-align:text-
.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:0;background-color:#6490b1} .im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:0;background-color:#6490b1}
.im_dialogs_scrollable_wrap .active a.im_dialog:hover,.im_dialogs_scrollable_wrap .active a.im_dialog_selected{background-color:#6490b1} .im_dialogs_scrollable_wrap .active a.im_dialog:hover,.im_dialogs_scrollable_wrap .active a.im_dialog_selected{background-color:#6490b1}
.im_dialogs_modal_list{padding-top:10px} .im_dialogs_modal_list{padding-top:10px}
.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word} .im_dialog_message_wrap{word-wrap:break-word}
.im_dialog_message_typing,.im_dialog_message_wtyping .im_dialog_message_notyping{display:none}
.im_dialog_message_wtyping .im_dialog_message_typing{display:block}
a.im_dialog .im_dialog_chat_from_wrap,a.im_dialog .im_short_message_media,a.im_dialog .im_short_message_service{color:#3a6d99} a.im_dialog .im_dialog_chat_from_wrap,a.im_dialog .im_short_message_media,a.im_dialog .im_short_message_service{color:#3a6d99}
a.im_dialog .im_short_message_text{color:grey} a.im_dialog .im_short_message_text{color:grey}
a.im_dialog .im_dialog_draft_from{color:#c05f5a} a.im_dialog .im_dialog_draft_from{color:#c05f5a}
@ -1355,6 +1353,7 @@ a.im_dialog:hover .im_dialog_unread,a.im_dialog_selected .im_dialog_unread{backg
a.im_dialog:hover .im_dialog_date,a.im_dialog_selected .im_dialog_date{color:#91a6ba} a.im_dialog:hover .im_dialog_date,a.im_dialog_selected .im_dialog_date{color:#91a6ba}
.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date,.active a.im_dialog_selected .im_dialog_date{color:#b8d1e4} .active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date,.active a.im_dialog_selected .im_dialog_date{color:#b8d1e4}
.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis} .im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.im_dialog_message_wrap{height:44px;overflow:hidden}
.im_dialog_message{color:grey} .im_dialog_message{color:grey}
.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background-image:url(../img/icons/IconsetW.png);background-repeat:no-repeat;background-position:-17px -444px} .icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background-image:url(../img/icons/IconsetW.png);background-repeat:no-repeat;background-position:-17px -444px}
.is_2x .icon-caret{background-image:url(../img/icons/IconsetW_2x.png);background-size:42px 1171px} .is_2x .icon-caret{background-image:url(../img/icons/IconsetW_2x.png);background-size:42px 1171px}

68
js/app.js

File diff suppressed because one or more lines are too long

324
js/lib/push_worker.js

@ -1 +1,323 @@
console.log('push worker placeholder') 'use strict';
console.log('[SW] Push worker started')
var port
var lastAliveTime = false
var pendingNotification = false
var muteUntil = false
var baseUrl
switch (location.hostname) {
case 'localhost':
baseUrl = 'http://localhost:8000/app/index.html#/im'
break
case 'zhukov.github.io':
baseUrl = 'https://zhukov.github.io/webogram/#/im'
break
default:
case 'web.telegram.org':
baseUrl = 'https://' + location.hostname + '/#/im'
}
self.addEventListener('push', function(event) {
var obj = event.data.json()
console.log('[SW] push', obj)
if (!obj.badge) {
closeAllNotifications(obj, event)
} else {
fireNotification(obj, event)
}
})
self.addEventListener('activate', function(event) {
event.waitUntil(clients.claim())
})
self.addEventListener('message', function(event) {
console.log('[SW] on message', event.data)
port = event.ports[0] || event.source
if (event.data.type == 'alive') {
lastAliveTime = +(new Date())
if (pendingNotification &&
port &&
'postMessage' in port) {
port.postMessage(pendingNotification)
pendingNotification = false
}
}
if (event.data.type == 'notifications_clear') {
closeAllNotifications(event.data, event)
}
if (event.data.baseUrl) {
baseUrl = event.data.baseUrl
}
})
function fireNotification(obj, event) {
var nowTime = +(new Date())
if (nowTime - lastAliveTime < 60000) {
console.log('Supress notification because some instance is alive')
return false
}
if (muteUntil && nowTime < muteUntil) {
console.log('Supress notification because mute for ', (muteUntil - nowTime) / 60000, 'min')
return false
}
var title = obj.title || 'Telegram'
var body = obj.description || ''
var icon = 'img/logo_share.png'
var peerID
if (obj.custom && obj.custom.channel_id) {
peerID = -obj.custom.channel_id
}
else if (obj.custom && obj.custom.chat_id) {
peerID = -obj.custom.chat_id
}
else {
peerID = obj.custom && obj.custom.from_id || 0
}
obj.custom.peerID = peerID
var notificationPromise = self.registration.showNotification(title, {
body: body,
icon: icon,
tag: 'peer' + peerID,
data: obj,
actions: [
{
action: 'mute1d',
title: 'Mute background alerts for 1 day'
},
{
action: 'push_settings',
title: 'Background alerts settings'
}
]
})
var finalPromise = notificationPromise.then(function (event) {
if (event && event.notification) {
pushToNotifications(event.notification)
}
})
event.waitUntil(finalPromise)
return true
}
var notifications = []
function pushToNotifications(notification) {
if (notifications.indexOf(notification) == -1) {
notifications.push(notification)
notification.onclose = onCloseNotification
}
}
function onCloseNotification(event) {
muteUntil = Math.max(muteUntil || 0, +(new Date()) + 600000) // 10 min
removeFromNotifications(event.notification)
}
function removeFromNotifications(notification) {
console.warn('on close', notification)
var pos = notifications.indexOf(notification)
if (pos != -1) {
notifications.splice(pos, 1)
}
}
function closeAllNotifications(obj, event) {
for (var i = 0, len = notifications.length; i < len; i++) {
try {
notifications[i].close()
} catch (e) {}
}
event.waitUntil(self.registration.getNotifications({}).then(function(notifications) {
for (var i = 0, len = notifications.length; i < len; i++) {
try {
notifications[i].close()
} catch (e) {}
}
}))
notifications = []
}
self.addEventListener('notificationclick', function(event) {
var notification = event.notification
console.log('On notification click: ', notification.tag)
notification.close()
var action = event.action
if (action == 'mute1d') {
console.log('[SW] mute for 1d')
muteUntil = +(new Date()) + 86400000
IDBManager.setItem('mute_until', muteUntil.toString())
return
}
event.waitUntil(clients.matchAll({
type: 'window'
}).then(function(clientList) {
notification.data.action = action
pendingNotification = {type: 'push_click', data: notification.data}
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i]
if ('focus' in client) {
client.focus()
;(port || client).postMessage(pendingNotification)
pendingNotification = false
return
}
}
if (clients.openWindow) {
return clients.openWindow(baseUrl)
}
}))
})
self.addEventListener('notificationclose', onCloseNotification)
;(function () {
var dbName = 'keyvalue'
var dbStoreName = 'kvItems'
var dbVersion = 2
var openDbPromise
var idbIsAvailable = self.indexedDB !== undefined &&
self.IDBTransaction !== undefined
function isAvailable () {
return idbIsAvailable
}
function openDatabase () {
if (openDbPromise) {
return openDbPromise
}
return openDbPromise = new Promise(function (resolve, reject) {
try {
var request = indexedDB.open(dbName, dbVersion)
var createObjectStore = function (db) {
db.createObjectStore(dbStoreName)
}
if (!request) {
throw new Exception()
}
} catch (error) {
console.error('error opening db', error.message)
idbIsAvailable = false
return $q.reject(error)
}
var finished = false
setTimeout(function () {
if (!finished) {
request.onerror({type: 'IDB_CREATE_TIMEOUT'})
}
}, 3000)
request.onsuccess = function (event) {
finished = true
var db = request.result
db.onerror = function (error) {
idbIsAvailable = false
console.error('Error creating/accessing IndexedDB database', error)
reject(error)
}
resolve(db)
}
request.onerror = function (event) {
finished = true
idbIsAvailable = false
console.error('Error creating/accessing IndexedDB database', event)
reject(event)
}
request.onupgradeneeded = function (event) {
finished = true
console.warn('performing idb upgrade from', event.oldVersion, 'to', event.newVersion)
var db = event.target.result
if (event.oldVersion == 1) {
db.deleteObjectStore(dbStoreName)
}
createObjectStore(db)
}
})
}
function setItem (key, value) {
return openDatabase().then(function (db) {
try {
var objectStore = db.transaction([dbStoreName], IDBTransaction.READ_WRITE || 'readwrite').objectStore(dbStoreName)
var request = objectStore.put(value, key)
} catch (error) {
idbIsAvailable = false
return Promise.reject(error)
}
return new Promise(function(resolve, reject) {
request.onsuccess = function (event) {
resolve(value)
}
request.onerror = function (error) {
reject(error)
}
})
})
}
function getItem (key) {
return openDatabase().then(function (db) {
return new Promise(function(resolve, reject) {
var objectStore = db.transaction([dbStoreName], IDBTransaction.READ || 'readonly').objectStore(dbStoreName)
var request = objectStore.get(key)
request.onsuccess = function (event) {
var result = event.target.result
if (result === undefined) {
reject()
} else {
resolve(result)
}
}
request.onerror = function (error) {
reject(error)
}
})
})
}
openDatabase()
self.IDBManager = {
name: 'IndexedDB',
isAvailable: isAvailable,
setItem: setItem,
getItem: getItem
}
})()
IDBManager.getItem('mute_until').then(function (newMuteUntil) {
muteUntil = Math.max(muteUntil || 0, newMuteUntil || 0) || false
})

10
js/locales/de-de.json

@ -279,6 +279,7 @@
"conversation_media_location": "Standort", "conversation_media_location": "Standort",
"conversation_media_contact": "Kontakt", "conversation_media_contact": "Kontakt",
"conversation_media_attachment": "Anhang", "conversation_media_attachment": "Anhang",
"conversation_search_peer": "Diesen Chat durchsuchen",
"conversation_group_created": "hat die Gruppe erstellt", "conversation_group_created": "hat die Gruppe erstellt",
"conversation_group_renamed": "hat den Gruppennamen geändert", "conversation_group_renamed": "hat den Gruppennamen geändert",
"conversation_group_photo_updated": "hat das Gruppenbild geändert", "conversation_group_photo_updated": "hat das Gruppenbild geändert",
@ -325,7 +326,7 @@
"message_service_removed_channel_photo": "Bild gelöscht", "message_service_removed_channel_photo": "Bild gelöscht",
"message_service_scored_X": "{'one': 'erzielte {} Punkte', 'other': 'erzielten {} Punkte'}", "message_service_scored_X": "{'one': 'erzielte {} Punkte', 'other': 'erzielten {} Punkte'}",
"message_action_reply": "Antworten", "message_action_reply": "Antworten",
"message_action_edit": "Edit", "message_action_edit": "Bearbeiten",
"message_action_delete": "Löschen", "message_action_delete": "Löschen",
"message_action_forward": "Weiterleiten", "message_action_forward": "Weiterleiten",
"message_action_select": "Auswählen", "message_action_select": "Auswählen",
@ -392,6 +393,7 @@
"head_media_video": "Videos", "head_media_video": "Videos",
"head_media_documents": "Dateien", "head_media_documents": "Dateien",
"head_media_audio": "Sprachnachrichten", "head_media_audio": "Sprachnachrichten",
"head_media_search": "Suchen",
"head_about": "Info", "head_about": "Info",
"head_clear_all": "Verlauf löschen", "head_clear_all": "Verlauf löschen",
"head_edit": "Bearbeiten", "head_edit": "Bearbeiten",
@ -458,8 +460,8 @@
"im_attach_file_title": "Datei senden", "im_attach_file_title": "Datei senden",
"im_emoji_btn_title": "Emoticon einfügen", "im_emoji_btn_title": "Emoticon einfügen",
"im_submit_message": "Senden", "im_submit_message": "Senden",
"im_submit_edit_message": "Save", "im_submit_edit_message": "Speichern",
"im_edit_message_title": "Edit message", "im_edit_message_title": "Nachricht bearbeiten",
"login_sign_in": "Anmelden", "login_sign_in": "Anmelden",
"login_enter_number_description": "Land auswählen und Nummer eintragen", "login_enter_number_description": "Land auswählen und Nummer eintragen",
"login_incorrect_number": "Falsche Telefonnummer", "login_incorrect_number": "Falsche Telefonnummer",
@ -510,7 +512,7 @@
"login_controller_unknown_country": "Unbekannt", "login_controller_unknown_country": "Unbekannt",
"message_forwarded_message": "Weitergeleitete Nachricht", "message_forwarded_message": "Weitergeleitete Nachricht",
"message_via_bot": "via {bot}", "message_via_bot": "via {bot}",
"message_edited": "edited", "message_edited": "bearbeitet",
"message_forwarded_message_mobile": "Weitergeleitet von {from}", "message_forwarded_message_mobile": "Weitergeleitet von {from}",
"message_forwarded_via_message_mobile": "Weitergeleitet von {from} via {bot}", "message_forwarded_via_message_mobile": "Weitergeleitet von {from} via {bot}",
"message_attach_audio_message": "Sprachnachricht", "message_attach_audio_message": "Sprachnachricht",

4
js/locales/en-us.json

@ -59,10 +59,12 @@
"settings_modal_active_sessions": "Active sessions", "settings_modal_active_sessions": "Active sessions",
"settings_modal_settings": "Settings", "settings_modal_settings": "Settings",
"settings_modal_notification_alert": "Notification alerts", "settings_modal_notification_alert": "Notification alerts",
"settings_modal_notification_push": "PUSH notifications",
"settings_modal_vibrate": "Vibrate", "settings_modal_vibrate": "Vibrate",
"settings_modal_sounds": "Sounds", "settings_modal_sounds": "Sounds",
"settings_modal_language": "Language", "settings_modal_language": "Language",
"settings_modal_notifications": "Desktop notifications", "settings_modal_notifications": "Desktop notifications",
"settings_modal_pushes": "Background notifications",
"settings_modal_message_preview": "Message preview", "settings_modal_message_preview": "Message preview",
"settings_modal_sound": "Sound", "settings_modal_sound": "Sound",
"settings_modal_enter_send_description_md": "**Enter** - send message, **Shift + Enter** - new line", "settings_modal_enter_send_description_md": "**Enter** - send message, **Shift + Enter** - new line",
@ -408,7 +410,7 @@
"error_modal_not_found_description": "The page was not found.", "error_modal_not_found_description": "The page was not found.",
"error_modal_flood_description": "You are performing too many actions. Please try again later.", "error_modal_flood_description": "You are performing too many actions. Please try again later.",
"error_modal_internal_description": "Internal server error occured. Please try again later.", "error_modal_internal_description": "Internal server error occured. Please try again later.",
"error_modal_tech_details": "Technical details here", "error_modal_tech_details": "Click for technical details",
"error_modal_recovery_na_description": "Since you haven't provided a recovery e-mail when setting up your password, your remaining options are either to remember your password or to reset your account.", "error_modal_recovery_na_description": "Since you haven't provided a recovery e-mail when setting up your password, your remaining options are either to remember your password or to reset your account.",
"error_modal_password_success_descripion": "Your password for Two-Step Verification is now active.", "error_modal_password_success_descripion": "Your password for Two-Step Verification is now active.",
"error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.", "error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.",

4
js/locales/es-es.json

@ -279,6 +279,7 @@
"conversation_media_location": "Ubicación", "conversation_media_location": "Ubicación",
"conversation_media_contact": "Contacto", "conversation_media_contact": "Contacto",
"conversation_media_attachment": "Archivo adjunto", "conversation_media_attachment": "Archivo adjunto",
"conversation_search_peer": "Buscar en el chat",
"conversation_group_created": "creó el grupo", "conversation_group_created": "creó el grupo",
"conversation_group_renamed": "cambió el nombre del grupo", "conversation_group_renamed": "cambió el nombre del grupo",
"conversation_group_photo_updated": "cambió la foto del grupo", "conversation_group_photo_updated": "cambió la foto del grupo",
@ -367,7 +368,7 @@
"error_modal_not_found_description": "No se encontró la página.", "error_modal_not_found_description": "No se encontró la página.",
"error_modal_flood_description": "Estás realizando demasiadas acciones. Por favor, reinténtalo más tarde.", "error_modal_flood_description": "Estás realizando demasiadas acciones. Por favor, reinténtalo más tarde.",
"error_modal_internal_description": "Error interno del servidor. Por favor, reinténtalo más tarde.", "error_modal_internal_description": "Error interno del servidor. Por favor, reinténtalo más tarde.",
"error_modal_tech_details": "Detalles técnicos aquí", "error_modal_tech_details": "Haz clic para detalles técnicos",
"error_modal_recovery_na_description": "Como no estableciste un e-mail de recuperación cuando configuraste tu contraseña, las opciones restantes son recordar tu contraseña o restablecer tu cuenta.", "error_modal_recovery_na_description": "Como no estableciste un e-mail de recuperación cuando configuraste tu contraseña, las opciones restantes son recordar tu contraseña o restablecer tu cuenta.",
"error_modal_password_success_descripion": "Tu contraseña para la verificación en dos pasos está activada.", "error_modal_password_success_descripion": "Tu contraseña para la verificación en dos pasos está activada.",
"error_modal_password_disabled_descripion": "Has desactivado la verificación en dos pasos.", "error_modal_password_disabled_descripion": "Has desactivado la verificación en dos pasos.",
@ -392,6 +393,7 @@
"head_media_video": "Vídeos", "head_media_video": "Vídeos",
"head_media_documents": "Archivos", "head_media_documents": "Archivos",
"head_media_audio": "Mensajes de voz", "head_media_audio": "Mensajes de voz",
"head_media_search": "Buscar",
"head_about": "Acerca de", "head_about": "Acerca de",
"head_clear_all": "Borrar historial", "head_clear_all": "Borrar historial",
"head_edit": "Editar", "head_edit": "Editar",

14
js/locales/it-it.json

@ -279,6 +279,7 @@
"conversation_media_location": "Posizione", "conversation_media_location": "Posizione",
"conversation_media_contact": "Contatto", "conversation_media_contact": "Contatto",
"conversation_media_attachment": "Allegato", "conversation_media_attachment": "Allegato",
"conversation_search_peer": "Cerca in questa chat",
"conversation_group_created": "ha creato il gruppo", "conversation_group_created": "ha creato il gruppo",
"conversation_group_renamed": "ha cambiato il nome del gruppo", "conversation_group_renamed": "ha cambiato il nome del gruppo",
"conversation_group_photo_updated": "ha cambiato la foto del gruppo", "conversation_group_photo_updated": "ha cambiato la foto del gruppo",
@ -325,7 +326,7 @@
"message_service_removed_channel_photo": "Foto del canale rimossa", "message_service_removed_channel_photo": "Foto del canale rimossa",
"message_service_scored_X": "{'one': 'ha totalizzato {} punto', 'other': 'ha totalizzato {} punti'}", "message_service_scored_X": "{'one': 'ha totalizzato {} punto', 'other': 'ha totalizzato {} punti'}",
"message_action_reply": "Rispondi", "message_action_reply": "Rispondi",
"message_action_edit": "Edit", "message_action_edit": "Modifica",
"message_action_delete": "Elimina", "message_action_delete": "Elimina",
"message_action_forward": "Inoltra", "message_action_forward": "Inoltra",
"message_action_select": "Seleziona", "message_action_select": "Seleziona",
@ -367,7 +368,7 @@
"error_modal_not_found_description": "La pagina non è stata trovata.", "error_modal_not_found_description": "La pagina non è stata trovata.",
"error_modal_flood_description": "Stai effettuando troppe operazioni. Si prega di riprovare più tardi.", "error_modal_flood_description": "Stai effettuando troppe operazioni. Si prega di riprovare più tardi.",
"error_modal_internal_description": "Si è verificato un errore interno al server. Si prega di riprovare più tardi.", "error_modal_internal_description": "Si è verificato un errore interno al server. Si prega di riprovare più tardi.",
"error_modal_tech_details": "Dettagli tecnici qui", "error_modal_tech_details": "Clicca per i dettagli tecnici",
"error_modal_recovery_na_description": "Siccome non hai fornito un'email di recupero quando hai impostato la tua password, non ti resta che ricordarti la password o ripristinare il tuo account.", "error_modal_recovery_na_description": "Siccome non hai fornito un'email di recupero quando hai impostato la tua password, non ti resta che ricordarti la password o ripristinare il tuo account.",
"error_modal_password_success_descripion": "La password per la verifica in due passaggi è ora attiva.", "error_modal_password_success_descripion": "La password per la verifica in due passaggi è ora attiva.",
"error_modal_password_disabled_descripion": "Hai disabilitato la verifica in due passaggi.", "error_modal_password_disabled_descripion": "Hai disabilitato la verifica in due passaggi.",
@ -392,6 +393,7 @@
"head_media_video": "Video", "head_media_video": "Video",
"head_media_documents": "File", "head_media_documents": "File",
"head_media_audio": "Messaggi vocali", "head_media_audio": "Messaggi vocali",
"head_media_search": "Cerca",
"head_about": "Info", "head_about": "Info",
"head_clear_all": "Cancella cronologia", "head_clear_all": "Cancella cronologia",
"head_edit": "Modifica", "head_edit": "Modifica",
@ -458,8 +460,8 @@
"im_attach_file_title": "Invia file", "im_attach_file_title": "Invia file",
"im_emoji_btn_title": "Inserisci emoticon", "im_emoji_btn_title": "Inserisci emoticon",
"im_submit_message": "Invia", "im_submit_message": "Invia",
"im_submit_edit_message": "Save", "im_submit_edit_message": "Salva",
"im_edit_message_title": "Edit message", "im_edit_message_title": "Modifica messaggio",
"login_sign_in": "Accedi", "login_sign_in": "Accedi",
"login_enter_number_description": "Inserisci il tuo numero di telefono completo.", "login_enter_number_description": "Inserisci il tuo numero di telefono completo.",
"login_incorrect_number": "Numero di telefono errato", "login_incorrect_number": "Numero di telefono errato",
@ -469,7 +471,7 @@
"login_generating_key": "Generazione chiavi", "login_generating_key": "Generazione chiavi",
"login_generating_keys_info": "Le chiavi vengono generate una volta soltanto. Questa operazione potrebbe impiegare alcuni minuti su dispositivi lenti, si prega di attendere.", "login_generating_keys_info": "Le chiavi vengono generate una volta soltanto. Questa operazione potrebbe impiegare alcuni minuti su dispositivi lenti, si prega di attendere.",
"login_edit_number": "Modifica numero di telefono", "login_edit_number": "Modifica numero di telefono",
"login_enter_code_label_md": "Abbiamo inviato il codice su **Telegram** nell'altro tuo dispositivo.\nPer favore inserisci il codice qui sotto.", "login_enter_code_label_md": "Abbiamo inviato il codice su **Telegram** nel tuo altro dispositivo.\nPer favore inserisci il codice qui sotto.",
"login_enter_sms_code_label_md": "Abbiamo inviato un SMS con un codice di attivazione al tuo numero.\nPer favore inserisci il codice qui sotto.", "login_enter_sms_code_label_md": "Abbiamo inviato un SMS con un codice di attivazione al tuo numero.\nPer favore inserisci il codice qui sotto.",
"login_enter_call_code_label_md": "Stiamo chiamando il tuo numero per dettarti un codice.\nPer favore inserisci il codice qui sotto.", "login_enter_call_code_label_md": "Stiamo chiamando il tuo numero per dettarti un codice.\nPer favore inserisci il codice qui sotto.",
"login_code_remaining": "Potrai richiedere un SMS tra {remaining}", "login_code_remaining": "Potrai richiedere un SMS tra {remaining}",
@ -510,7 +512,7 @@
"login_controller_unknown_country": "Sconosciuto", "login_controller_unknown_country": "Sconosciuto",
"message_forwarded_message": "Messaggio inoltrato", "message_forwarded_message": "Messaggio inoltrato",
"message_via_bot": "via {bot}", "message_via_bot": "via {bot}",
"message_edited": "edited", "message_edited": "modificato",
"message_forwarded_message_mobile": "Inoltrato da {from}", "message_forwarded_message_mobile": "Inoltrato da {from}",
"message_forwarded_via_message_mobile": "Inoltrato da {from} via {bot}", "message_forwarded_via_message_mobile": "Inoltrato da {from} via {bot}",
"message_attach_audio_message": "Messaggio vocale", "message_attach_audio_message": "Messaggio vocale",

12
js/locales/nl-nl.json

@ -279,6 +279,7 @@
"conversation_media_location": "Locatie", "conversation_media_location": "Locatie",
"conversation_media_contact": "Contact", "conversation_media_contact": "Contact",
"conversation_media_attachment": "Bijlage", "conversation_media_attachment": "Bijlage",
"conversation_search_peer": "In chat zoeken",
"conversation_group_created": "heeft de groep gemaakt", "conversation_group_created": "heeft de groep gemaakt",
"conversation_group_renamed": "heeft de groepsnaam gewijzigd", "conversation_group_renamed": "heeft de groepsnaam gewijzigd",
"conversation_group_photo_updated": "heeft de groepsafbeelding gewijzigd", "conversation_group_photo_updated": "heeft de groepsafbeelding gewijzigd",
@ -325,7 +326,7 @@
"message_service_removed_channel_photo": "Kanaalfoto verwijderd", "message_service_removed_channel_photo": "Kanaalfoto verwijderd",
"message_service_scored_X": "{'one': '{} punt', 'other': '{} punten'}", "message_service_scored_X": "{'one': '{} punt', 'other': '{} punten'}",
"message_action_reply": "Antwoord", "message_action_reply": "Antwoord",
"message_action_edit": "Edit", "message_action_edit": "Wijzig",
"message_action_delete": "Verwijder", "message_action_delete": "Verwijder",
"message_action_forward": "Doorsturen", "message_action_forward": "Doorsturen",
"message_action_select": "Selecteren", "message_action_select": "Selecteren",
@ -367,7 +368,7 @@
"error_modal_not_found_description": "De pagina werd niet gevonden.", "error_modal_not_found_description": "De pagina werd niet gevonden.",
"error_modal_flood_description": "Je voert teveel acties tegelijkertijd uit. Probeer het later nog eens.", "error_modal_flood_description": "Je voert teveel acties tegelijkertijd uit. Probeer het later nog eens.",
"error_modal_internal_description": "Interne serverfout opgetreden. Probeer het later opnieuw.", "error_modal_internal_description": "Interne serverfout opgetreden. Probeer het later opnieuw.",
"error_modal_tech_details": "Technische details hier", "error_modal_tech_details": "Klik voor technische details",
"error_modal_recovery_na_description": "Omdat je geen herstel-e-mailadres hebt opgegeven voor je wachtwoord zul je bij verlies van je wachtwoord je account moeten resetten.", "error_modal_recovery_na_description": "Omdat je geen herstel-e-mailadres hebt opgegeven voor je wachtwoord zul je bij verlies van je wachtwoord je account moeten resetten.",
"error_modal_password_success_descripion": "Je wachtwoord voor twee-staps-verificatie is nu actief.", "error_modal_password_success_descripion": "Je wachtwoord voor twee-staps-verificatie is nu actief.",
"error_modal_password_disabled_descripion": "Twee-staps-verificatie uitgeschakeld.", "error_modal_password_disabled_descripion": "Twee-staps-verificatie uitgeschakeld.",
@ -392,6 +393,7 @@
"head_media_video": "Video's", "head_media_video": "Video's",
"head_media_documents": "Bestanden", "head_media_documents": "Bestanden",
"head_media_audio": "Spraakberichten", "head_media_audio": "Spraakberichten",
"head_media_search": "Zoeken",
"head_about": "Over", "head_about": "Over",
"head_clear_all": "Geschiedenis wissen", "head_clear_all": "Geschiedenis wissen",
"head_edit": "Wijzig", "head_edit": "Wijzig",
@ -458,8 +460,8 @@
"im_attach_file_title": "Bestand versturen", "im_attach_file_title": "Bestand versturen",
"im_emoji_btn_title": "Emoji invoegen", "im_emoji_btn_title": "Emoji invoegen",
"im_submit_message": "Stuur", "im_submit_message": "Stuur",
"im_submit_edit_message": "Save", "im_submit_edit_message": "Opslaan",
"im_edit_message_title": "Edit message", "im_edit_message_title": "Bericht wijzigen",
"login_sign_in": "Inloggen", "login_sign_in": "Inloggen",
"login_enter_number_description": "Kies je land en voer je volledige telefoonnummer in.", "login_enter_number_description": "Kies je land en voer je volledige telefoonnummer in.",
"login_incorrect_number": "Onjuist telefoonnummer", "login_incorrect_number": "Onjuist telefoonnummer",
@ -510,7 +512,7 @@
"login_controller_unknown_country": "Onbekend", "login_controller_unknown_country": "Onbekend",
"message_forwarded_message": "Doorgestuurd bericht", "message_forwarded_message": "Doorgestuurd bericht",
"message_via_bot": "via {bot}", "message_via_bot": "via {bot}",
"message_edited": "edited", "message_edited": "gewijzigd",
"message_forwarded_message_mobile": "Doorgestuurd van {from}", "message_forwarded_message_mobile": "Doorgestuurd van {from}",
"message_forwarded_via_message_mobile": "Doorgestuurd van {from} via {bot}", "message_forwarded_via_message_mobile": "Doorgestuurd van {from} via {bot}",
"message_attach_audio_message": "Spraakbericht", "message_attach_audio_message": "Spraakbericht",

4
js/locales/pt-br.json

@ -279,6 +279,7 @@
"conversation_media_location": "Localização", "conversation_media_location": "Localização",
"conversation_media_contact": "Contato", "conversation_media_contact": "Contato",
"conversation_media_attachment": "Anexo", "conversation_media_attachment": "Anexo",
"conversation_search_peer": "Buscar neste chat",
"conversation_group_created": "criou o grupo", "conversation_group_created": "criou o grupo",
"conversation_group_renamed": "alterou o nome do grupo", "conversation_group_renamed": "alterou o nome do grupo",
"conversation_group_photo_updated": "alterou a foto do grupo", "conversation_group_photo_updated": "alterou a foto do grupo",
@ -367,7 +368,7 @@
"error_modal_not_found_description": "Página não foi encontrada.", "error_modal_not_found_description": "Página não foi encontrada.",
"error_modal_flood_description": "Você está realizando muitas ações. Tente novamente mais tarde.", "error_modal_flood_description": "Você está realizando muitas ações. Tente novamente mais tarde.",
"error_modal_internal_description": "Erro interno do servidor. Por favor, tente novamente mais tarde.", "error_modal_internal_description": "Erro interno do servidor. Por favor, tente novamente mais tarde.",
"error_modal_tech_details": "Detalhes técnicos aqui", "error_modal_tech_details": "Clique para detalhes técnicos",
"error_modal_recovery_na_description": "Como você não indicou um e-mail de recuperação quando configurou a sua senha, as únicas opções restantes são lembrar a senha ou apagar a sua conta.", "error_modal_recovery_na_description": "Como você não indicou um e-mail de recuperação quando configurou a sua senha, as únicas opções restantes são lembrar a senha ou apagar a sua conta.",
"error_modal_password_success_descripion": "A sua senha para a verificação em duas etapas foi ativada.", "error_modal_password_success_descripion": "A sua senha para a verificação em duas etapas foi ativada.",
"error_modal_password_disabled_descripion": "Você deve desativar a verificação em duas etapas", "error_modal_password_disabled_descripion": "Você deve desativar a verificação em duas etapas",
@ -392,6 +393,7 @@
"head_media_video": "Vídeos", "head_media_video": "Vídeos",
"head_media_documents": "Arquivos", "head_media_documents": "Arquivos",
"head_media_audio": "Mensagens de voz", "head_media_audio": "Mensagens de voz",
"head_media_search": "Pesquisar",
"head_about": "Sobre", "head_about": "Sobre",
"head_clear_all": "Limpar histórico", "head_clear_all": "Limpar histórico",
"head_edit": "Editar", "head_edit": "Editar",

4
js/locales/ru-ru.json

@ -279,6 +279,7 @@
"conversation_media_location": "Местоположение", "conversation_media_location": "Местоположение",
"conversation_media_contact": "Контакт", "conversation_media_contact": "Контакт",
"conversation_media_attachment": "Прикрепление", "conversation_media_attachment": "Прикрепление",
"conversation_search_peer": "Search in this chat",
"conversation_group_created": "создал(а) группу", "conversation_group_created": "создал(а) группу",
"conversation_group_renamed": "изменил(а) название группы", "conversation_group_renamed": "изменил(а) название группы",
"conversation_group_photo_updated": "изменил(а) фото группы", "conversation_group_photo_updated": "изменил(а) фото группы",
@ -367,7 +368,7 @@
"error_modal_not_found_description": "Страница не найдена.", "error_modal_not_found_description": "Страница не найдена.",
"error_modal_flood_description": "Вы выполняете слишком много действий. Попробуйте повторить позже.", "error_modal_flood_description": "Вы выполняете слишком много действий. Попробуйте повторить позже.",
"error_modal_internal_description": "Внутренняя ошибка сервера. Попробуйте повторить позже.", "error_modal_internal_description": "Внутренняя ошибка сервера. Попробуйте повторить позже.",
"error_modal_tech_details": "Технические подробности:", "error_modal_tech_details": "Click for technical details",
"error_modal_recovery_na_description": "Так как вы не указали адрес электронной почты для восстановления пароля, то оставшиеся варианты — вспомнить пароль или сбросить аккаунт.", "error_modal_recovery_na_description": "Так как вы не указали адрес электронной почты для восстановления пароля, то оставшиеся варианты — вспомнить пароль или сбросить аккаунт.",
"error_modal_password_success_descripion": "Ваш пароль для двухэтапной аутентификации активен.", "error_modal_password_success_descripion": "Ваш пароль для двухэтапной аутентификации активен.",
"error_modal_password_disabled_descripion": "Вы отключили двухэтапную аутентификацию.", "error_modal_password_disabled_descripion": "Вы отключили двухэтапную аутентификацию.",
@ -392,6 +393,7 @@
"head_media_video": "Видео", "head_media_video": "Видео",
"head_media_documents": "Файлы", "head_media_documents": "Файлы",
"head_media_audio": "Голосовые сообщения", "head_media_audio": "Голосовые сообщения",
"head_media_search": "Search",
"head_about": "О приложении", "head_about": "О приложении",
"head_clear_all": "Clear history", "head_clear_all": "Clear history",
"head_edit": "Редактировать", "head_edit": "Редактировать",

2
service_worker.js

File diff suppressed because one or more lines are too long

28
webogram.appcache

@ -1,5 +1,5 @@
CACHE MANIFEST CACHE MANIFEST
# Time: Thu Dec 08 2016 23:35:55 GMT+0300 (MSK) # Time: Thu Dec 15 2016 22:09:30 GMT+0300 (MSK)
CACHE: CACHE:
@ -9,6 +9,7 @@ service_worker.js
css/app.css css/app.css
css/desktop.css css/desktop.css
css/mobile.css css/mobile.css
js/app.js
img/Manytabs.png img/Manytabs.png
img/Manytabs_2x.png img/Manytabs_2x.png
img/Telegram.png img/Telegram.png
@ -26,9 +27,19 @@ img/iphone_home120.png
img/iphone_startup.png img/iphone_startup.png
img/logo_share.png img/logo_share.png
img/sound_a.mp3 img/sound_a.mp3
js/app.js
nacl/mtproto_crypto.nmf nacl/mtproto_crypto.nmf
nacl/mtproto_crypto.pexe nacl/mtproto_crypto.pexe
js/lib/bin_utils.js
js/lib/crypto_worker.js
js/lib/polyfill.js
js/lib/push_worker.js
js/locales/de-de.json
js/locales/en-us.json
js/locales/es-es.json
js/locales/it-it.json
js/locales/nl-nl.json
js/locales/pt-br.json
js/locales/ru-ru.json
img/changelog/card_wecandoit.png img/changelog/card_wecandoit.png
img/icons/AboutLogos.png img/icons/AboutLogos.png
img/icons/AboutLogos_2x.png img/icons/AboutLogos_2x.png
@ -63,19 +74,8 @@ img/placeholders/UserAvatar7@2x.png
img/placeholders/UserAvatar8@2x.png img/placeholders/UserAvatar8@2x.png
img/placeholders/VideoThumbConversation.gif img/placeholders/VideoThumbConversation.gif
img/placeholders/VideoThumbModal.gif img/placeholders/VideoThumbModal.gif
js/lib/bin_utils.js
js/lib/crypto_worker.js
js/lib/polyfill.js
js/lib/push_worker.js
js/locales/de-de.json
js/locales/en-us.json
js/locales/es-es.json
js/locales/it-it.json
js/locales/nl-nl.json
js/locales/pt-br.json
js/locales/ru-ru.json
vendor/closure/long.js
vendor/cryptoJS/crypto.js vendor/cryptoJS/crypto.js
vendor/closure/long.js
vendor/jsbn/jsbn_combined.js vendor/jsbn/jsbn_combined.js
vendor/leemon_bigint/bigint.js vendor/leemon_bigint/bigint.js
vendor/rusha/rusha.js vendor/rusha/rusha.js

Loading…
Cancel
Save