1
0
mirror of https://github.com/axllent/mailpit.git synced 2025-07-01 00:45:27 +02:00

Feature: Add pagination & limits to URL parameters (#303)

* Set search conditions to query parameters

* Fixed by review

* Update query parameters when new message notified
This commit is contained in:
Yuuki Takahashi
2024-06-01 20:32:11 +09:00
committed by Ralph Slooten
parent 31390e4b82
commit e87b98b73b
11 changed files with 106 additions and 21 deletions

View File

@ -9,6 +9,7 @@ import NavTags from '../components/NavTags.vue'
import Pagination from '../components/Pagination.vue'
import SearchForm from '../components/SearchForm.vue'
import { mailbox } from '../stores/mailbox'
import {pagination} from "../stores/pagination";
export default {
mixins: [CommonMixins, MessagesMixins],
@ -30,6 +31,14 @@ export default {
},
mounted() {
const paginationParams = this.getPaginationParams()
if (paginationParams?.start) {
pagination.start = paginationParams.start
}
if (paginationParams?.limit) {
pagination.limit = paginationParams.limit
}
mailbox.searching = false
this.apiURI = this.resolve(`/api/v1/messages`)
this.loadMessages()

View File

@ -184,9 +184,18 @@ export default {
mailbox.lastMessage = this.$route.params.id
if (mailbox.searching) {
this.$router.push('/search?q=' + encodeURIComponent(mailbox.searching))
const params = new URLSearchParams({
q: mailbox.searching,
start: pagination.start.toString(),
limit: pagination.limit.toString(),
})
this.$router.push('/search?' + params.toString())
} else {
this.$router.push('/')
const params = new URLSearchParams({
start: pagination.start.toString(),
limit: pagination.limit.toString(),
})
this.$router.push('/?' + params.toString())
}
},

View File

@ -33,17 +33,25 @@ export default {
watch: {
$route(to, from) {
this.doSearch(true)
this.doSearch()
}
},
mounted() {
const paginationParams = this.getPaginationParams()
if (paginationParams?.start) {
pagination.start = paginationParams.start
}
if (paginationParams?.limit) {
pagination.limit = paginationParams.limit
}
mailbox.searching = this.getSearch()
this.doSearch(false)
this.doSearch()
},
methods: {
doSearch: function (resetPagination) {
doSearch: function () {
let s = this.getSearch()
if (!s) {
@ -54,10 +62,6 @@ export default {
mailbox.searching = s
if (resetPagination) {
pagination.start = 0
}
this.apiURI = this.resolve(`/api/v1/search`) + '?query=' + encodeURIComponent(s)
if (mailbox.timeZone != '' && (s.indexOf('after:') != -1 || s.indexOf('before:') != -1)) {
this.apiURI += '&tz=' + encodeURIComponent(mailbox.timeZone)