1
0
Fork 0
forked from forgejo/forgejo

Never use /api/v1 from Gitea UI Pages (#19318)

Reusing `/api/v1` from Gitea UI Pages have pros and cons.
Pros:
1) Less code copy

Cons:
1) API/v1 have to support shared session with page requests.
2) You need to consider for each other when you want to change something about api/v1 or page.

This PR moves all dependencies to API/v1 from UI Pages.

Partially replace #16052
This commit is contained in:
Lunny Xiao 2022-04-08 02:59:56 +08:00 committed by GitHub
parent bb7e0619c3
commit 783a021889
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 1082 additions and 74 deletions

View file

@ -120,7 +120,7 @@ export default {
load(data, callback) {
this.loading = true;
this.i18nErrorMessage = null;
$.get(`${appSubUrl}/api/v1/repos/${data.owner}/${data.repo}/issues/${data.index}`).done((issue) => {
$.get(`${appSubUrl}/${data.owner}/${data.repo}/issues/${data.index}/info`).done((issue) => {
this.issue = issue;
}).fail((jqXHR) => {
if (jqXHR.responseJSON && jqXHR.responseJSON.message) {

View file

@ -124,7 +124,7 @@ function initVueComponents() {
return this.repos.length > 0 && this.repos.length < this.counts[`${this.reposFilter}:${this.archivedFilter}:${this.privateFilter}`];
},
searchURL() {
return `${this.subUrl}/api/v1/repos/search?sort=updated&order=desc&uid=${this.uid}&team_id=${this.teamId}&q=${this.searchQuery
return `${this.subUrl}/repo/search?sort=updated&order=desc&uid=${this.uid}&team_id=${this.teamId}&q=${this.searchQuery
}&page=${this.page}&limit=${this.searchLimit}&mode=${this.repoTypes[this.reposFilter].searchMode
}${this.reposFilter !== 'all' ? '&exclusive=1' : ''
}${this.archivedFilter === 'archived' ? '&archived=true' : ''}${this.archivedFilter === 'unarchived' ? '&archived=false' : ''
@ -302,7 +302,7 @@ function initVueComponents() {
this.isLoading = true;
if (!this.reposTotalCount) {
const totalCountSearchURL = `${this.subUrl}/api/v1/repos/search?sort=updated&order=desc&uid=${this.uid}&team_id=${this.teamId}&q=&page=1&mode=`;
const totalCountSearchURL = `${this.subUrl}/repo/search?sort=updated&order=desc&uid=${this.uid}&team_id=${this.teamId}&q=&page=1&mode=`;
$.getJSON(totalCountSearchURL, (_result, _textStatus, request) => {
this.reposTotalCount = request.getResponseHeader('X-Total-Count');
});

View file

@ -8,7 +8,7 @@ export function initCompSearchUserBox() {
$searchUserBox.search({
minCharacters: 2,
apiSettings: {
url: `${appSubUrl}/api/v1/users/search?q={query}`,
url: `${appSubUrl}/user/search?q={query}`,
onResponse(response) {
const items = [];
const searchQueryUppercase = $searchUserBox.find('input').val().toUpperCase();

View file

@ -158,7 +158,7 @@ async function updateNotificationTable() {
async function updateNotificationCount() {
const data = await $.ajax({
type: 'GET',
url: `${appSubUrl}/api/v1/notifications/new`,
url: `${appSubUrl}/notifications/new`,
headers: {
'X-Csrf-Token': csrfToken,
},

View file

@ -20,7 +20,7 @@ export function initOrgTeamSearchRepoBox() {
$searchRepoBox.search({
minCharacters: 2,
apiSettings: {
url: `${appSubUrl}/api/v1/repos/search?q={query}&uid=${$searchRepoBox.data('uid')}`,
url: `${appSubUrl}/repo/search?q={query}&uid=${$searchRepoBox.data('uid')}`,
onResponse(response) {
const items = [];
$.each(response.data, (_i, item) => {

View file

@ -91,7 +91,7 @@ export function initRepoTopicBar() {
label: 'ui small label'
},
apiSettings: {
url: `${appSubUrl}/api/v1/topics/search?q={query}`,
url: `${appSubUrl}/explore/topics/search?q={query}`,
throttle: 500,
cache: false,
onResponse(res) {

View file

@ -54,7 +54,7 @@ function updateDeadline(deadlineString) {
realDeadline = new Date(newDate);
}
$.ajax(`${$('#update-issue-deadline-form').attr('action')}/deadline`, {
$.ajax(`${$('#update-issue-deadline-form').attr('action')}`, {
data: JSON.stringify({
due_date: realDeadline,
}),
@ -91,9 +91,9 @@ export function initRepoIssueList() {
const repoId = $('#repoId').val();
const crossRepoSearch = $('#crossRepoSearch').val();
const tp = $('#type').val();
let issueSearchUrl = `${appSubUrl}/api/v1/repos/${repolink}/issues?q={query}&type=${tp}`;
let issueSearchUrl = `${appSubUrl}/${repolink}/issues/search?q={query}&type=${tp}`;
if (crossRepoSearch === 'true') {
issueSearchUrl = `${appSubUrl}/api/v1/repos/issues/search?q={query}&priority_repo_id=${repoId}&type=${tp}`;
issueSearchUrl = `${appSubUrl}/issues/search?q={query}&priority_repo_id=${repoId}&type=${tp}`;
}
$('#new-dependency-drop-list')
.dropdown({
@ -292,7 +292,7 @@ export function initRepoIssueReferenceRepositorySearch() {
$('.issue_reference_repository_search')
.dropdown({
apiSettings: {
url: `${appSubUrl}/api/v1/repos/search?q={query}&limit=20`,
url: `${appSubUrl}/repo/search?q={query}&limit=20`,
onResponse(response) {
const filteredResponse = {success: true, results: []};
$.each(response.data, (_r, repo) => {

View file

@ -21,7 +21,7 @@ export function initRepoSettingSearchTeamBox() {
$searchTeamBox.search({
minCharacters: 2,
apiSettings: {
url: `${appSubUrl}/api/v1/orgs/${$searchTeamBox.data('org')}/teams/search?q={query}`,
url: `${appSubUrl}/org/${$searchTeamBox.data('org')}/teams/-/search?q={query}`,
headers: {'X-Csrf-Token': csrfToken},
onResponse(response) {
const items = [];

View file

@ -23,7 +23,7 @@ export function initRepoTemplateSearch() {
$('#repo_template_search')
.dropdown({
apiSettings: {
url: `${appSubUrl}/api/v1/repos/search?q={query}&template=true&priority_owner_id=${$('#uid').val()}`,
url: `${appSubUrl}/repo/search?q={query}&template=true&priority_owner_id=${$('#uid').val()}`,
onResponse(response) {
const filteredResponse = {success: true, results: []};
filteredResponse.results.push({

View file

@ -111,7 +111,7 @@ async function updateStopwatchWithCallback(callback, timeout) {
async function updateStopwatch() {
const data = await $.ajax({
type: 'GET',
url: `${appSubUrl}/api/v1/user/stopwatches`,
url: `${appSubUrl}/user/stopwatches`,
headers: {'X-Csrf-Token': csrfToken},
});