Added keys for date search
Search for messages with peer || date
This commit is contained in:
parent
294099e8b7
commit
71caac7c61
@ -1255,7 +1255,9 @@ export default class AppMediaViewer extends AppMediaViewerBase<'caption', 'delet
|
|||||||
backLimit,
|
backLimit,
|
||||||
threadId: this.searchContext.threadId,
|
threadId: this.searchContext.threadId,
|
||||||
folderId: this.searchContext.folderId,
|
folderId: this.searchContext.folderId,
|
||||||
nextRate: this.searchContext.nextRate
|
nextRate: this.searchContext.nextRate,
|
||||||
|
minDate: this.searchContext.minDate,
|
||||||
|
maxDate: this.searchContext.maxDate
|
||||||
}).then(value => {
|
}).then(value => {
|
||||||
this.log('loaded more media by maxId:', maxId, value, older, this.reverse);
|
this.log('loaded more media by maxId:', maxId, value, older, this.reverse);
|
||||||
|
|
||||||
|
@ -741,7 +741,7 @@ export default class AppSearchSuper {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
} else {
|
} else if(!this.searchContext.peerId && !this.searchContext.minDate) {
|
||||||
const renderRecentSearch = (setActive = true) => {
|
const renderRecentSearch = (setActive = true) => {
|
||||||
return appStateManager.getState().then(state => {
|
return appStateManager.getState().then(state => {
|
||||||
if(!middleware()) {
|
if(!middleware()) {
|
||||||
@ -794,7 +794,7 @@ export default class AppSearchSuper {
|
|||||||
|
|
||||||
renderRecentSearch()
|
renderRecentSearch()
|
||||||
]);
|
]);
|
||||||
}
|
} else return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
public load(single = false, justLoad = false) {
|
public load(single = false, justLoad = false) {
|
||||||
@ -828,7 +828,7 @@ export default class AppSearchSuper {
|
|||||||
this.loadedChats = true;
|
this.loadedChats = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.searchContext.query.trim()) {
|
if(!this.searchContext.query.trim() && !this.searchContext.peerId && !this.searchContext.minDate) {
|
||||||
this.loaded[type] = true;
|
this.loaded[type] = true;
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
@ -67,12 +67,83 @@ export type DateData = {
|
|||||||
maxDate: number,
|
maxDate: number,
|
||||||
};
|
};
|
||||||
export function fillTipDates(query: string, dates: DateData[]) {
|
export function fillTipDates(query: string, dates: DateData[]) {
|
||||||
const q = query.trim();
|
const q = query.trim().toLowerCase();
|
||||||
|
|
||||||
if(q.length < 3) {
|
if(q.length < 3) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if("today".indexOf(q) === 0) {
|
||||||
|
const date = new Date();
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = date.getMonth();
|
||||||
|
const day = date.getDate();
|
||||||
|
date.setFullYear(year, month, day);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const minDate = date.getTime();
|
||||||
|
date.setFullYear(year, month, day + 1);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const maxDate = date.getTime() - 1;
|
||||||
|
dates.push({
|
||||||
|
title: 'Today',
|
||||||
|
minDate,
|
||||||
|
maxDate
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if("yesterday".indexOf(q) === 0) {
|
||||||
|
const date = new Date();
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = date.getMonth();
|
||||||
|
const day = date.getDate();
|
||||||
|
date.setFullYear(year, month, day);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const minDate = date.getTime() - 86400000;
|
||||||
|
date.setFullYear(year, month, day + 1);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const maxDate = date.getTime() - 86400001;
|
||||||
|
dates.push({
|
||||||
|
title: 'Yesterday',
|
||||||
|
minDate,
|
||||||
|
maxDate
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dayOfWeek = getDayOfWeek(q);
|
||||||
|
if(dayOfWeek >= 0) {
|
||||||
|
const date = new Date();
|
||||||
|
const now = date.getTime();
|
||||||
|
const currentDay = date.getDay();
|
||||||
|
const distance = dayOfWeek - currentDay;
|
||||||
|
date.setDate(date.getDate() + distance);
|
||||||
|
if(date.getTime() > now) {
|
||||||
|
date.setTime(date.getTime() - 604800000);
|
||||||
|
}
|
||||||
|
const year = date.getFullYear()
|
||||||
|
const month = date.getMonth();
|
||||||
|
const day = date.getDate();
|
||||||
|
date.setFullYear(year, month, day);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const minDate = date.getTime();
|
||||||
|
date.setFullYear(year, month, day + 1);
|
||||||
|
date.setHours(0, 0, 0);
|
||||||
|
|
||||||
|
const maxDate = date.getTime() - 1;
|
||||||
|
dates.push({
|
||||||
|
title: formatWeekLong(minDate),
|
||||||
|
minDate,
|
||||||
|
maxDate
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let matches: any[];
|
let matches: any[];
|
||||||
if((matches = shortDate.exec(q)) !== null) {
|
if((matches = shortDate.exec(q)) !== null) {
|
||||||
const g1 = matches[1];
|
const g1 = matches[1];
|
||||||
@ -289,6 +360,11 @@ function formatterYearMax(timestamp: number) {
|
|||||||
return ('0' + date.getDate()).slice(-2) + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + date.getFullYear();
|
return ('0' + date.getDate()).slice(-2) + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + date.getFullYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatWeekLong(timestamp: number) {
|
||||||
|
const date = new Date(timestamp);
|
||||||
|
return days[date.getDay()];
|
||||||
|
}
|
||||||
|
|
||||||
function validDateForMonth(day: number, month: number) {
|
function validDateForMonth(day: number, month: number) {
|
||||||
if(month >= 0 && month < 12) {
|
if(month >= 0 && month < 12) {
|
||||||
if(day >= 0 && day < numberOfDaysEachMonth[month]) {
|
if(day >= 0 && day < numberOfDaysEachMonth[month]) {
|
||||||
@ -336,4 +412,20 @@ function getMonth(q: string) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getDayOfWeek(q: string) {
|
||||||
|
const c = new Date();
|
||||||
|
if(q.length <= 3) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(let i = 0; i < 7; i++) {
|
||||||
|
c.setDate(c.getDate() + 1);
|
||||||
|
|
||||||
|
if(formatWeekLong(c.getTime()).toLowerCase().indexOf(q) === 0) {
|
||||||
|
return c.getDay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
MOUNT_CLASS_TO && (MOUNT_CLASS_TO.fillTipDates = fillTipDates);
|
MOUNT_CLASS_TO && (MOUNT_CLASS_TO.fillTipDates = fillTipDates);
|
Loading…
x
Reference in New Issue
Block a user