Skip to content

Commit

Permalink
Фиксы багов и недочетов
Browse files Browse the repository at this point in the history
1) Обновление счетчика сообщений в меню
2) Обработка приветственного сообщения
3) Фикс проблемы с lp при переходе между аккаунтами
4) Фикс проблем с восстановлением удаленных сообщений
5) Указание в списке диалогов месяца и дня числу, даже если прошло 
больше года
6) Синий цвет имени у @ID100, @ID101 и @id300
  • Loading branch information
danyadev committed Jun 1, 2019
1 parent ec41013 commit 346d5a8
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 19 deletions.
10 changes: 8 additions & 2 deletions src/components/messages/MessagesPeer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<div class="content">
<div class="title">
<div class="name_wrap">
<div class="name" v-emoji="chatName"></div>
<div :class="['name', { greenName }]" v-emoji="chatName"></div>
<div v-if="owner && owner.verified" class="verified"></div>
<div v-if="peer.muted" class="muted"></div>
</div>
Expand Down Expand Up @@ -63,6 +63,9 @@
else if(this.owner) return this.owner.name || `${this.owner.first_name} ${this.owner.last_name}`;
else return '...';
},
greenName() {
return [100, 101, 333].includes(Number(this.peer.id));
},
time() {
return getShortDate(new Date(this.msg.date * 1000));
},
Expand Down Expand Up @@ -186,6 +189,10 @@
text-overflow: ellipsis;
}
.name.greenName {
color: #265b96;
}
.verified {
flex: none;
margin: 1px 0 0 4px;
Expand Down Expand Up @@ -219,7 +226,6 @@
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-top: 2px;
}
.message { color: #4c4d50 }
Expand Down
13 changes: 9 additions & 4 deletions src/js/date.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,15 @@ export function getMessageDate(date) {
export function getShortDate(date) {
const now = new Date();

if(isSameDay(date, now)) return format(date, 'HH:mm', { locale: ru });
else if(isSameDay(subDays(now, 1), date)) return getTranslate('yesterday');
else if(date.getFullYear() != now.getFullYear()) return date.getFullYear();
else return format(date, 'd MMM', { locale: ru });
if(isSameDay(date, now)) {
return format(date, 'HH:mm', { locale: ru });
} else if(isSameDay(subDays(now, 1), date)) {
return getTranslate('yesterday');
} else if(differenceInCalendarYears(now, date)) {
return format(date, 'd MMM yyyy', { locale: ru });
} else {
return format(date, 'd MMM', { locale: ru });
}
}

// Используется в шапке чата
Expand Down
10 changes: 6 additions & 4 deletions src/js/longpoll.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,13 @@ export default new class Longpoll extends EventEmitter {
version: this.version
}));

if(data.failed) await this.catchErrors(data);
if(data.ts) this.ts = data.ts;
if(data.pts) this.pts = data.pts;
if(this.started) {
if(data.failed) await this.catchErrors(data);
if(data.ts) this.ts = data.ts;
if(data.pts) this.pts = data.pts;

this.emitHistory(data.updates);
this.emitHistory(data.updates);
}
}

this.stopped = true;
Expand Down
36 changes: 27 additions & 9 deletions src/js/longpollEvents.js
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,19 @@ export default {

store.commit('messages/removeMessages', { peer_id, msg_ids });

if(!await getLastMessage(peer_id)) {
const lastMsg = await getLastMessage(peer_id);

if(!lastMsg) {
store.commit('messages/updatePeersList', {
id: peer_id,
remove: true
});
} else {
store.commit('messages/updateConversation', {
peer: { id: peer_id },
msg: lastMsg
});

store.commit('messages/moveConversation', { peer_id });
}
}
Expand All @@ -196,13 +203,20 @@ export default {
const lastAddedMsg = items[items.length-1];
const lastLocalConv = convList[peersList.length - 1];

if(!lastLocalMsg || lastAddedMsg.msg.date > lastLocalMsg.date) {
for(const { msg } of items) {
store.commit('messages/insertMessage', { peer_id, msg });
}
const { items: newMessages } = await vkapi('messages.getById', {
message_ids: items.map(({ msg }) => msg.id)
});

const msg = await getLastMessage(peer_id);
for(const msg of newMessages) {
store.commit('messages/insertMessage', {
peer_id: peer_id,
msg: parseMessage(msg)
});
}

const msg = await getLastMessage(peer_id);

if(!lastLocalMsg || lastAddedMsg.msg.date > lastLocalMsg.date) {
if(lastLocalConv && msg.date < lastLocalConv.msg.date) return;

if(!conv) {
Expand All @@ -226,7 +240,6 @@ export default {
pack: true,
parser: getMessage,
handler({ key: peer_id, items }) {
// В случае, если данные были получены через messages.getLongPollHistory
const conv = store.state.messages.conversations[peer_id];
const lastMsg = items[items.length - 1].msg;

Expand All @@ -252,6 +265,8 @@ export default {

for(const { msg } of items) longpoll.emit('new_message', msg.random_id);

if(lastMsg.hidden) return;

if(!store.state.messages.peersList.includes(peer_id)) {
store.commit('messages/addConversations', [{
peer: peerData,
Expand Down Expand Up @@ -523,12 +538,15 @@ export default {
},

80: {
// Изменении количества сообщений
// Изменение количества непрочитанных диалогов
// [count, count_with_notifications, 0]
// count_with_notifications - кол-во непрочитанных диалогов, в которых включены уведомления
parser: ([count]) => count,
handler(count) {

store.commit('updateMenuCounters', {
name: 'messages',
value: count
});
}
},

Expand Down
3 changes: 3 additions & 0 deletions src/js/store/modules/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ export default {
setMenuCounters(state, counters) {
state.menuCounters = counters;
},
updateMenuCounters(state, { name, value }) {
Vue.set(state.menuCounters, name, value);
},
addProfiles(state, profiles) {
const result = profiles.reduce((users, user) => {
users[user.id] = user;
Expand Down

0 comments on commit 346d5a8

Please sign in to comment.