diff --git a/web_src/js/index.ts b/web_src/js/index.ts index 798f6117c6..72309d0fcd 100644 --- a/web_src/js/index.ts +++ b/web_src/js/index.ts @@ -1,74 +1,83 @@ import '../fomantic/build/fomantic.js'; import '../css/index.css'; -import type {HtmxResponseInfo} from 'htmx.org'; -import {showErrorToast} from './modules/toast.ts'; +import type { HtmxResponseInfo } from 'htmx.org'; +import { showErrorToast } from './modules/toast.ts'; -import {initDashboardRepoList} from './features/dashboard.ts'; -import {initGlobalCopyToClipboardListener} from './features/clipboard.ts'; -import {initRepoGraphGit} from './features/repo-graph.ts'; -import {initHeatmap} from './features/heatmap.ts'; -import {initImageDiff} from './features/imagediff.ts'; -import {initRepoMigration} from './features/repo-migration.ts'; -import {initRepoProject} from './features/repo-projects.ts'; -import {initTableSort} from './features/tablesort.ts'; -import {initAdminUserListSearchForm} from './features/admin/users.ts'; -import {initAdminConfigs} from './features/admin/config.ts'; -import {initMarkupAnchors} from './markup/anchors.ts'; -import {initNotificationCount} from './features/notification.ts'; -import {initRepoIssueContentHistory} from './features/repo-issue-content.ts'; -import {initStopwatch} from './features/stopwatch.ts'; -import {initRepoFileSearch} from './features/repo-findfile.ts'; -import {initMarkupContent} from './markup/content.ts'; -import {initRepoFileView} from './features/file-view.ts'; -import {initUserExternalLogins, initUserCheckAppUrl} from './features/user-auth.ts'; -import {initRepoPullRequestReview, initRepoIssueFilterItemLabel} from './features/repo-issue.ts'; -import {initRepoEllipsisButton, initCommitStatuses} from './features/repo-commit.ts'; -import {initRepoTopicBar} from './features/repo-home.ts'; -import {initAdminCommon} from './features/admin/common.ts'; -import {initRepoCodeView} from './features/repo-code.ts'; -import {initSshKeyFormParser} from './features/sshkey-helper.ts'; -import {initUserSettings} from './features/user-settings.ts'; -import {initRepoActivityTopAuthorsChart, initRepoArchiveLinks} from './features/repo-common.ts'; -import {initRepoMigrationStatusChecker} from './features/repo-migrate.ts'; -import {initRepoDiffView} from './features/repo-diff.ts'; -import {initOrgTeam} from './features/org-team.ts'; -import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.ts'; -import {initRepoReleaseNew} from './features/repo-release.ts'; -import {initRepoEditor} from './features/repo-editor.ts'; -import {initCompSearchUserBox} from './features/comp/SearchUserBox.ts'; -import {initInstall} from './features/install.ts'; -import {initCompSearchTeamBox} from './features/comp/SearchTeamBox.ts' -import {initCompWebHookEditor} from './features/comp/WebHookEditor.ts'; -import {initRepoBranchButton} from './features/repo-branch.ts'; -import {initCommonOrganization} from './features/common-organization.ts'; -import {initRepoWikiForm} from './features/repo-wiki.ts'; -import {initRepository, initBranchSelectorTabs} from './features/repo-legacy.ts'; -import {initCopyContent} from './features/copycontent.ts'; -import {initCaptcha} from './features/captcha.ts'; -import {initRepositoryActionView} from './features/repo-actions.ts'; -import {initGlobalTooltips} from './modules/tippy.ts'; -import {initGiteaFomantic} from './modules/fomantic.ts'; -import {initSubmitEventPolyfill} from './utils/dom.ts'; -import {initRepoIssueList} from './features/repo-issue-list.ts'; -import {initCommonIssueListQuickGoto} from './features/common-issue-list.ts'; -import {initRepoContributors} from './features/contributors.ts'; -import {initRepoCodeFrequency} from './features/code-frequency.ts'; -import {initRepoRecentCommits} from './features/recent-commits.ts'; -import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.ts'; -import {initGlobalSelectorObserver} from './modules/observer.ts'; -import {initRepositorySearch} from './features/repo-search.ts'; -import {initColorPickers} from './features/colorpicker.ts'; -import {initAdminSelfCheck} from './features/admin/selfcheck.ts'; -import {initOAuth2SettingsDisableCheckbox} from './features/oauth2-settings.ts'; -import {initGlobalFetchAction} from './features/common-fetch-action.ts'; -import {initCommmPageComponents, initGlobalComponent, initGlobalDropdown, initGlobalInput} from './features/common-page.ts'; -import {initGlobalButtonClickOnEnter, initGlobalButtons, initGlobalDeleteButton} from './features/common-button.ts'; -import {initGlobalComboMarkdownEditor, initGlobalEnterQuickSubmit, initGlobalFormDirtyLeaveConfirm} from './features/common-form.ts'; -import {callInitFunctions} from './modules/init.ts'; -import {initRepoViewFileTree} from './features/repo-view-file-tree.ts'; -import {initActionsPermissionsForm} from './features/common-actions-permissions.ts'; -import {initGlobalShortcut} from './modules/shortcut.ts'; -import {initCommonGroup, initGroup} from "./features/group.ts"; +import { initDashboardRepoList } from './features/dashboard.ts'; +import { initGlobalCopyToClipboardListener } from './features/clipboard.ts'; +import { initRepoGraphGit } from './features/repo-graph.ts'; +import { initHeatmap } from './features/heatmap.ts'; +import { initImageDiff } from './features/imagediff.ts'; +import { initRepoMigration } from './features/repo-migration.ts'; +import { initRepoProject } from './features/repo-projects.ts'; +import { initTableSort } from './features/tablesort.ts'; +import { initAdminUserListSearchForm } from './features/admin/users.ts'; +import { initAdminConfigs } from './features/admin/config.ts'; +import { initMarkupAnchors } from './markup/anchors.ts'; +import { initNotificationCount } from './features/notification.ts'; +import { initRepoIssueContentHistory } from './features/repo-issue-content.ts'; +import { initStopwatch } from './features/stopwatch.ts'; +import { initRepoFileSearch } from './features/repo-findfile.ts'; +import { initMarkupContent } from './markup/content.ts'; +import { initRepoFileView } from './features/file-view.ts'; +import { initUserCheckAppUrl, initUserExternalLogins } from './features/user-auth.ts'; +import { initRepoIssueFilterItemLabel, initRepoPullRequestReview } from './features/repo-issue.ts'; +import { initCommitStatuses, initRepoEllipsisButton } from './features/repo-commit.ts'; +import { initRepoTopicBar } from './features/repo-home.ts'; +import { initAdminCommon } from './features/admin/common.ts'; +import { initRepoCodeView } from './features/repo-code.ts'; +import { initSshKeyFormParser } from './features/sshkey-helper.ts'; +import { initUserSettings } from './features/user-settings.ts'; +import { initRepoActivityTopAuthorsChart, initRepoArchiveLinks } from './features/repo-common.ts'; +import { initRepoMigrationStatusChecker } from './features/repo-migrate.ts'; +import { initRepoDiffView } from './features/repo-diff.ts'; +import { initOrgTeam } from './features/org-team.ts'; +import { initUserAuthWebAuthn, initUserAuthWebAuthnRegister } from './features/user-auth-webauthn.ts'; +import { initRepoReleaseNew } from './features/repo-release.ts'; +import { initRepoEditor } from './features/repo-editor.ts'; +import { initCompSearchUserBox } from './features/comp/SearchUserBox.ts'; +import { initInstall } from './features/install.ts'; +import { initCompSearchTeamBox } from './features/comp/SearchTeamBox.ts' +import { initCompWebHookEditor } from './features/comp/WebHookEditor.ts'; +import { initRepoBranchButton } from './features/repo-branch.ts'; +import { initCommonOrganization } from './features/common-organization.ts'; +import { initRepoWikiForm } from './features/repo-wiki.ts'; +import { initBranchSelectorTabs, initRepository } from './features/repo-legacy.ts'; +import { initCopyContent } from './features/copycontent.ts'; +import { initCaptcha } from './features/captcha.ts'; +import { initRepositoryActionView } from './features/repo-actions.ts'; +import { initGlobalTooltips } from './modules/tippy.ts'; +import { initGiteaFomantic } from './modules/fomantic.ts'; +import { initSubmitEventPolyfill } from './utils/dom.ts'; +import { initRepoIssueList } from './features/repo-issue-list.ts'; +import { initCommonIssueListQuickGoto } from './features/common-issue-list.ts'; +import { initRepoContributors } from './features/contributors.ts'; +import { initRepoCodeFrequency } from './features/code-frequency.ts'; +import { initRepoRecentCommits } from './features/recent-commits.ts'; +import { initRepoDiffCommitBranchesAndTags } from './features/repo-diff-commit.ts'; +import { initGlobalSelectorObserver } from './modules/observer.ts'; +import { initRepositorySearch } from './features/repo-search.ts'; +import { initColorPickers } from './features/colorpicker.ts'; +import { initAdminSelfCheck } from './features/admin/selfcheck.ts'; +import { initOAuth2SettingsDisableCheckbox } from './features/oauth2-settings.ts'; +import { initGlobalFetchAction } from './features/common-fetch-action.ts'; +import { + initCommmPageComponents, + initGlobalComponent, + initGlobalDropdown, + initGlobalInput +} from './features/common-page.ts'; +import { initGlobalButtonClickOnEnter, initGlobalButtons, initGlobalDeleteButton } from './features/common-button.ts'; +import { + initGlobalComboMarkdownEditor, + initGlobalEnterQuickSubmit, + initGlobalFormDirtyLeaveConfirm +} from './features/common-form.ts'; +import { callInitFunctions } from './modules/init.ts'; +import { initRepoViewFileTree } from './features/repo-view-file-tree.ts'; +import { initActionsPermissionsForm } from './features/common-actions-permissions.ts'; +import { initGlobalShortcut } from './modules/shortcut.ts'; +import { initCommonGroup, initGroup } from "./features/group.ts"; const initStartTime = performance.now(); const initPerformanceTracer = callInitFunctions([ @@ -177,4 +186,19 @@ if (initDur > 500) { console.error(`slow init functions took ${initDur.toFixed(3)}ms`); } +// https://htmx.org/events/#htmx:sendError +type HtmxEvent = Event & { detail: HtmxResponseInfo }; +document.body.addEventListener('htmx:sendError', + (event) => { + // TODO: add translations + showErrorToast(`Network error when calling ${(event as HtmxEvent).detail.requestConfig.path}`); + }); +// https://htmx.org/events/#htmx:responseError +document.body.addEventListener('htmx:responseError', + (event) => { + // TODO: add translations + showErrorToast(`Error ${(event as HtmxEvent).detail.xhr.status} when calling ${(event as HtmxEvent).detail.requestConfig.path}`); + }); + + document.dispatchEvent(new CustomEvent('gitea:index-ready'));