Added group rename, group photo update, live photo updates
This commit is contained in:
parent
6ac9ad9064
commit
389603551b
@ -1529,13 +1529,46 @@ img.img_fullsize {
|
|||||||
.chat_modal_wrap .modal-body {
|
.chat_modal_wrap .modal-body {
|
||||||
padding: 23px 25px 15px;
|
padding: 23px 25px 15px;
|
||||||
}
|
}
|
||||||
.chat_modal_image_wrap {
|
.chat_modal_photo_wrap {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
margin-right: 22px;
|
margin-right: 22px;
|
||||||
}
|
}
|
||||||
.chat_modal_image {
|
.chat_modal_photo {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.chat_modal_photo_change_wrap {
|
||||||
|
background: rgba(0,0,0,0.6);
|
||||||
|
padding: 2px 5px;
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
bottom: -30px;
|
||||||
|
|
||||||
|
-webkit-transition: all ease-in-out 0.2s;
|
||||||
|
transition: all ease-in-out 0.2s;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
height: 120px;
|
}
|
||||||
|
.chat_modal_photo:hover .chat_modal_photo_change_wrap {
|
||||||
|
bottom: 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat_modal_photo_update_link,
|
||||||
|
.chat_modal_photo_delete_link,
|
||||||
|
.chat_modal_photo_loading {
|
||||||
|
display: block;
|
||||||
|
color: rgba(255,255,255,0.8);
|
||||||
|
text-align: center;
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
.chat_modal_photo_update_link:hover,
|
||||||
|
.chat_modal_photo_delete_link:hover {
|
||||||
|
color: #FFF;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.chat_modal_photo_update_link {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.chat_modal_header {
|
.chat_modal_header {
|
||||||
margin: 0 0 5px;
|
margin: 0 0 5px;
|
||||||
|
@ -795,7 +795,7 @@ angular.module('myApp.controllers', [])
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller('ChatModalController', function ($scope, $timeout, $rootScope, AppUsersManager, AppChatsManager, MtpApiManager, NotificationsManager, AppMessagesManager, AppPeersManager, ApiUpdatesManager, ContactsSelectService) {
|
.controller('ChatModalController', function ($scope, $timeout, $rootScope, $modal, AppUsersManager, AppChatsManager, MtpApiManager, MtpApiFileManager, NotificationsManager, AppMessagesManager, AppPeersManager, ApiUpdatesManager, ContactsSelectService) {
|
||||||
|
|
||||||
$scope.chatFull = AppChatsManager.wrapForFull($scope.chatID, {});
|
$scope.chatFull = AppChatsManager.wrapForFull($scope.chatID, {});
|
||||||
|
|
||||||
@ -828,39 +828,34 @@ angular.module('myApp.controllers', [])
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function onStatedMessage (statedMessage) {
|
||||||
|
AppUsersManager.saveApiUsers(statedMessage.users);
|
||||||
|
AppChatsManager.saveApiChats(statedMessage.chats);
|
||||||
|
|
||||||
|
if (ApiUpdatesManager.saveSeq(statedMessage.seq)) {
|
||||||
|
ApiUpdatesManager.saveUpdate({
|
||||||
|
_: 'updateNewMessage',
|
||||||
|
message: statedMessage.message,
|
||||||
|
pts: statedMessage.pts
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$scope.leaveGroup = function () {
|
$scope.leaveGroup = function () {
|
||||||
MtpApiManager.invokeApi('messages.deleteChatUser', {
|
MtpApiManager.invokeApi('messages.deleteChatUser', {
|
||||||
chat_id: $scope.chatID,
|
chat_id: $scope.chatID,
|
||||||
user_id: {_: 'inputUserSelf'}
|
user_id: {_: 'inputUserSelf'}
|
||||||
}).then(function (result) {
|
}).then(onStatedMessage);
|
||||||
if (ApiUpdatesManager.saveSeq(result.seq)) {
|
|
||||||
ApiUpdatesManager.saveUpdate({
|
|
||||||
_: 'updateNewMessage',
|
|
||||||
message: result.message,
|
|
||||||
pts: result.pts
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.returnToGroup = function () {
|
$scope.returnToGroup = function () {
|
||||||
MtpApiManager.invokeApi('messages.addChatUser', {
|
MtpApiManager.invokeApi('messages.addChatUser', {
|
||||||
chat_id: $scope.chatID,
|
chat_id: $scope.chatID,
|
||||||
user_id: {_: 'inputUserSelf'}
|
user_id: {_: 'inputUserSelf'}
|
||||||
}).then(function (result) {
|
}).then(onStatedMessage);
|
||||||
if (ApiUpdatesManager.saveSeq(result.seq)) {
|
|
||||||
ApiUpdatesManager.saveUpdate({
|
|
||||||
_: 'updateNewMessage',
|
|
||||||
message: result.message,
|
|
||||||
pts: result.pts
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -892,21 +887,6 @@ angular.module('myApp.controllers', [])
|
|||||||
|
|
||||||
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
||||||
});
|
});
|
||||||
|
|
||||||
MtpApiManager.invokeApi('messages.addChatUser', {
|
|
||||||
chat_id: $scope.chatID,
|
|
||||||
user_id: {_: 'inputUserSelf'}
|
|
||||||
}).then(function (result) {
|
|
||||||
if (ApiUpdatesManager.saveSeq(result.seq)) {
|
|
||||||
ApiUpdatesManager.saveUpdate({
|
|
||||||
_: 'updateNewMessage',
|
|
||||||
message: result.message,
|
|
||||||
pts: result.pts
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.kickFromGroup = function (userID) {
|
$scope.kickFromGroup = function (userID) {
|
||||||
@ -917,17 +897,7 @@ angular.module('myApp.controllers', [])
|
|||||||
MtpApiManager.invokeApi('messages.deleteChatUser', {
|
MtpApiManager.invokeApi('messages.deleteChatUser', {
|
||||||
chat_id: $scope.chatID,
|
chat_id: $scope.chatID,
|
||||||
user_id: {_: 'inputUserForeign', user_id: userID, access_hash: user.access_hash || '0'}
|
user_id: {_: 'inputUserForeign', user_id: userID, access_hash: user.access_hash || '0'}
|
||||||
}).then(function (result) {
|
}).then(onStatedMessage);
|
||||||
if (ApiUpdatesManager.saveSeq(result.seq)) {
|
|
||||||
ApiUpdatesManager.saveUpdate({
|
|
||||||
_: 'updateNewMessage',
|
|
||||||
message: result.message,
|
|
||||||
pts: result.pts
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootScope.$broadcast('history_focus', {peerString: $scope.chatFull.peerString});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -942,6 +912,54 @@ angular.module('myApp.controllers', [])
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$scope.photo = {};
|
||||||
|
|
||||||
|
$scope.$watch('photo.file', onPhotoSelected);
|
||||||
|
|
||||||
|
function onPhotoSelected (photo) {
|
||||||
|
if (!photo || !photo.hasOwnProperty('name')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$scope.photo.updating = true;
|
||||||
|
MtpApiFileManager.uploadFile(photo).then(function (inputFile) {
|
||||||
|
MtpApiManager.invokeApi('messages.editChatPhoto', {
|
||||||
|
chat_id: $scope.chatID,
|
||||||
|
photo: {
|
||||||
|
_: 'inputChatUploadedPhoto',
|
||||||
|
file: inputFile,
|
||||||
|
crop: {_: 'inputPhotoCropAuto'}
|
||||||
|
}
|
||||||
|
}).then(function (updateResult) {
|
||||||
|
onStatedMessage(updateResult);
|
||||||
|
$scope.photo.updating = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.deletePhoto = function () {
|
||||||
|
$scope.photo.updating = true;
|
||||||
|
MtpApiManager.invokeApi('messages.editChatPhoto', {
|
||||||
|
chat_id: $scope.chatID,
|
||||||
|
photo: {_: 'inputChatPhotoEmpty'}
|
||||||
|
}).then(function (updateResult) {
|
||||||
|
onStatedMessage(updateResult);
|
||||||
|
$scope.photo.updating = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.editTitle = function () {
|
||||||
|
var scope = $rootScope.$new();
|
||||||
|
scope.chatID = $scope.chatID;
|
||||||
|
|
||||||
|
$modal.open({
|
||||||
|
templateUrl: 'partials/chat_edit_modal.html?3',
|
||||||
|
controller: 'ChatEditModalController',
|
||||||
|
scope: scope,
|
||||||
|
windowClass: 'contacts_modal_window'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller('SettingsModalController', function ($rootScope, $scope, $timeout, AppUsersManager, AppChatsManager, MtpApiManager, AppConfigManager, NotificationsManager, MtpApiFileManager, ApiUpdatesManager) {
|
.controller('SettingsModalController', function ($rootScope, $scope, $timeout, AppUsersManager, AppChatsManager, MtpApiManager, AppConfigManager, NotificationsManager, MtpApiFileManager, ApiUpdatesManager) {
|
||||||
@ -1199,3 +1217,37 @@ angular.module('myApp.controllers', [])
|
|||||||
};
|
};
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.controller('ChatEditModalController', function ($scope, $modalInstance, $rootScope, MtpApiManager, AppUsersManager, AppChatsManager, ApiUpdatesManager) {
|
||||||
|
|
||||||
|
var chat = AppChatsManager.getChat($scope.chatID);
|
||||||
|
$scope.group = {name: chat.title};
|
||||||
|
|
||||||
|
$scope.updateGroup = function () {
|
||||||
|
if (!$scope.group.name) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($scope.group.name == chat.title) {
|
||||||
|
return $modalInstance.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return MtpApiManager.invokeApi('messages.editChatTitle', {
|
||||||
|
chat_id: $scope.chatID,
|
||||||
|
title: $scope.group.name
|
||||||
|
}).then(function (editResult) {
|
||||||
|
AppUsersManager.saveApiUsers(editResult.users);
|
||||||
|
AppChatsManager.saveApiChats(editResult.chats);
|
||||||
|
|
||||||
|
if (ApiUpdatesManager.saveSeq(editResult.seq)) {
|
||||||
|
ApiUpdatesManager.saveUpdate({
|
||||||
|
_: 'updateNewMessage',
|
||||||
|
message: editResult.message,
|
||||||
|
pts: editResult.pts
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var peerString = AppChatsManager.getChatString($scope.chatID);
|
||||||
|
$rootScope.$broadcast('history_focus', {peerString: peerString});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})
|
||||||
|
@ -502,14 +502,19 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
function link (scope, element, attrs) {
|
function link (scope, element, attrs) {
|
||||||
var counter = 0;
|
var counter = 0;
|
||||||
|
|
||||||
var cachedSrc = MtpApiFileManager.getCachedFile(scope.thumb && scope.thumb.location);
|
var cachedSrc = MtpApiFileManager.getCachedFile(
|
||||||
|
scope.thumb &&
|
||||||
|
scope.thumb.location &&
|
||||||
|
!scope.thumb.location.empty
|
||||||
|
);
|
||||||
|
|
||||||
if (cachedSrc) {
|
if (cachedSrc) {
|
||||||
element.attr('src', cachedSrc);
|
element.attr('src', cachedSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
scope.$watch('thumb.location', function (newLocation) {
|
scope.$watchCollection('thumb.location', function (newLocation) {
|
||||||
var counterSaved = ++counter;
|
var counterSaved = ++counter;
|
||||||
if (!newLocation) {
|
if (!newLocation || newLocation.empty) {
|
||||||
element.attr('src', scope.thumb && scope.thumb.placeholder || 'img/blank.gif');
|
element.attr('src', scope.thumb && scope.thumb.placeholder || 'img/blank.gif');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1797,7 +1797,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato
|
|||||||
};
|
};
|
||||||
|
|
||||||
MtpNetworker.prototype.toggleOffline = function(enabled) {
|
MtpNetworker.prototype.toggleOffline = function(enabled) {
|
||||||
console.log('toggle ', enabled, this.dcID, this.iii);
|
// console.log('toggle ', enabled, this.dcID, this.iii);
|
||||||
if (this.offline !== undefined && this.offline == enabled) {
|
if (this.offline !== undefined && this.offline == enabled) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,7 @@ angular.module('myApp.services', [])
|
|||||||
|
|
||||||
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager) {
|
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager) {
|
||||||
var users = {},
|
var users = {},
|
||||||
|
cachedPhotoLocations = {},
|
||||||
contactsFillPromise,
|
contactsFillPromise,
|
||||||
contactsIndex = SearchIndexManager.createIndex();
|
contactsIndex = SearchIndexManager.createIndex();
|
||||||
|
|
||||||
@ -198,7 +199,11 @@ angular.module('myApp.services', [])
|
|||||||
if (users[apiUser.id] === undefined) {
|
if (users[apiUser.id] === undefined) {
|
||||||
users[apiUser.id] = apiUser;
|
users[apiUser.id] = apiUser;
|
||||||
} else {
|
} else {
|
||||||
angular.extend(users[apiUser.id], apiUser);
|
safeReplaceObject(users[apiUser.id], apiUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cachedPhotoLocations[apiUser.id] !== undefined) {
|
||||||
|
safeReplaceObject(cachedPhotoLocations[apiUser.id], apiUser && apiUser.photo && apiUser.photo.photo_small || {empty: true});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -222,9 +227,13 @@ angular.module('myApp.services', [])
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (cachedPhotoLocations[id] === undefined) {
|
||||||
|
cachedPhotoLocations[id] = user && user.photo && user.photo.photo_small || {empty: true};
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
placeholder: 'img/placeholders/' + placeholder + 'Avatar'+((Math.abs(id) % 8) + 1)+'@2x.png',
|
placeholder: 'img/placeholders/' + placeholder + 'Avatar'+((Math.abs(id) % 8) + 1)+'@2x.png',
|
||||||
location: user && user.photo && user.photo.photo_small
|
location: cachedPhotoLocations[id]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +307,12 @@ angular.module('myApp.services', [])
|
|||||||
case 'updateUserPhoto':
|
case 'updateUserPhoto':
|
||||||
var userID = update.user_id;
|
var userID = update.user_id;
|
||||||
if (users[userID]) {
|
if (users[userID]) {
|
||||||
users[userID].photo = update.photo;
|
safeReplaceObject(users[userID].photo, update.photo);
|
||||||
|
|
||||||
|
if (cachedPhotoLocations[userID] !== undefined) {
|
||||||
|
safeReplaceObject(cachedPhotoLocations[userID], update.photo && update.photo.photo_small || {empty: true});
|
||||||
|
}
|
||||||
|
|
||||||
$rootScope.$broadcast('user_update', userID);
|
$rootScope.$broadcast('user_update', userID);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -321,7 +335,8 @@ angular.module('myApp.services', [])
|
|||||||
})
|
})
|
||||||
|
|
||||||
.service('AppChatsManager', function ($rootScope, $modal, MtpApiFileManager, MtpApiManager, AppUsersManager, RichTextProcessor) {
|
.service('AppChatsManager', function ($rootScope, $modal, MtpApiFileManager, MtpApiManager, AppUsersManager, RichTextProcessor) {
|
||||||
var chats = {};
|
var chats = {},
|
||||||
|
cachedPhotoLocations = {};
|
||||||
|
|
||||||
function saveApiChats (apiChats) {
|
function saveApiChats (apiChats) {
|
||||||
angular.forEach(apiChats, saveApiChat);
|
angular.forEach(apiChats, saveApiChat);
|
||||||
@ -335,7 +350,11 @@ angular.module('myApp.services', [])
|
|||||||
if (chats[apiChat.id] === undefined) {
|
if (chats[apiChat.id] === undefined) {
|
||||||
chats[apiChat.id] = apiChat;
|
chats[apiChat.id] = apiChat;
|
||||||
} else {
|
} else {
|
||||||
angular.extend(chats[apiChat.id], apiChat);
|
safeReplaceObject(chats[apiChat.id], apiChat);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cachedPhotoLocations[apiChat.id] !== undefined) {
|
||||||
|
safeReplaceObject(cachedPhotoLocations[apiChat.id], apiChat && apiChat.photo && apiChat.photo.photo_small || {empty: true});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -350,9 +369,13 @@ angular.module('myApp.services', [])
|
|||||||
function getChatPhoto(id, placeholder) {
|
function getChatPhoto(id, placeholder) {
|
||||||
var chat = getChat(id);
|
var chat = getChat(id);
|
||||||
|
|
||||||
|
if (cachedPhotoLocations[id] === undefined) {
|
||||||
|
cachedPhotoLocations[id] = chat && chat.photo && chat.photo.photo_small || {empty: true};
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
placeholder: 'img/placeholders/' + placeholder + 'Avatar'+((Math.abs(id) % 4) + 1)+'@2x.png',
|
placeholder: 'img/placeholders/' + placeholder + 'Avatar'+((Math.abs(id) % 4) + 1)+'@2x.png',
|
||||||
location: chat && chat.photo && chat.photo.photo_small
|
location: cachedPhotoLocations[id]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<a class="modal-close-link" ng-click="$close()">Close</a>
|
<a class="modal-close-link" ng-click="$close()">Close</a>
|
||||||
<h4 class="modal-title">Create Chat</h4>
|
<h4 class="modal-title">Create Group</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
30
app/partials/chat_edit_modal.html
Normal file
30
app/partials/chat_edit_modal.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<div class="contacts_modal_wrap">
|
||||||
|
|
||||||
|
<div class="modal-header">
|
||||||
|
<a class="modal-close-link" ng-click="$close()">Close</a>
|
||||||
|
<h4 class="modal-title">Edit Group Title</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body">
|
||||||
|
|
||||||
|
<form ng-submit="updateGroup()">
|
||||||
|
|
||||||
|
<div class="contacts_modal_group_title">
|
||||||
|
<input class="form-control" my-focused type="text" placeholder="Group name" ng-model="group.name"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contacts_modal_panel clearfix">
|
||||||
|
|
||||||
|
<div class="contacts_modal_actions pull-right">
|
||||||
|
<button class="btn btn-default" ng-click="$dismiss()"> Cancel </button>
|
||||||
|
|
||||||
|
<button class="btn btn-tg" type="submit"> Save </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
@ -7,15 +7,34 @@
|
|||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
|
||||||
<div class="chat_modal_image_wrap pull-left">
|
<div class="chat_modal_photo_wrap pull-left">
|
||||||
<img
|
|
||||||
class="chat_modal_image"
|
<div class="chat_modal_photo">
|
||||||
my-load-thumb
|
<img
|
||||||
thumb="chatFull.thumb"/>
|
class="user_modal_image"
|
||||||
|
my-load-thumb
|
||||||
|
thumb="chatFull.thumb"
|
||||||
|
/>
|
||||||
|
<div class="chat_modal_photo_change_wrap" ng-if="chatFull.chat._ != 'chatForbidden' && !chatFull.chat.left">
|
||||||
|
<div ng-if="photo.updating" class="chat_modal_photo_loading">Updating<span my-typing-dots></span></div>
|
||||||
|
<div ng-if="!photo.updating">
|
||||||
|
<div class="chat_modal_photo_update_link">
|
||||||
|
<input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />
|
||||||
|
Update photo
|
||||||
|
</div>
|
||||||
|
<a ng-if="chatFull.thumb.location" href="" ng-click="deletePhoto()" class="chat_modal_photo_delete_link">Delete photo</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="chat_modal_info_wrap clearfix">
|
<div class="chat_modal_info_wrap clearfix">
|
||||||
<h4 class="chat_modal_header" ng-bind-html="chatFull.chat.rTitle"></h4>
|
<h4 class="chat_modal_header">
|
||||||
|
<a href="" ng-if="chatFull.chat._ != 'chatForbidden' && !chatFull.chat.left" ng-click="editTitle()" ng-bind-html="chatFull.chat.rTitle"></a>
|
||||||
|
<span ng-if="chatFull.chat._ == 'chatForbidden' || chatFull.chat.left" ng-bind-html="chatFull.chat.rTitle"></span>
|
||||||
|
</h4>
|
||||||
<p class="chat_modal_members_count" ng-if="chatFull.chat.participants_count > 0">
|
<p class="chat_modal_members_count" ng-if="chatFull.chat.participants_count > 0">
|
||||||
<ng-pluralize count="chatFull.chat.participants_count"
|
<ng-pluralize count="chatFull.chat.participants_count"
|
||||||
when="{'0': 'No members', 'one': '1 member', 'other': '{} members'}">
|
when="{'0': 'No members', 'one': '1 member', 'other': '{} members'}">
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul ng-if="!offline" class="nav navbar-nav navbar-right">
|
<ul ng-if="!offline" class="nav navbar-nav navbar-right">
|
||||||
<li ng-if="isLoggedIn"><a href="" ng-click="openGroup()">New Chat</a></li>
|
<li ng-if="isLoggedIn"><a href="" ng-click="openGroup()">New Group</a></li>
|
||||||
<li ng-if="isLoggedIn"><a href="" ng-click="openContacts()">Contacts</a></li>
|
<li ng-if="isLoggedIn"><a href="" ng-click="openContacts()">Contacts</a></li>
|
||||||
<li ng-if="isLoggedIn"><a href="" ng-click="openSettings()">Settings</a></li>
|
<li ng-if="isLoggedIn"><a href="" ng-click="openSettings()">Settings</a></li>
|
||||||
<li><a href="https://github.com/zhukov/webogram" target="_blank">About</a></li>
|
<li><a href="https://github.com/zhukov/webogram" target="_blank">About</a></li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user