mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-09 05:09:39 +00:00
Added database connection error handling
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
<div class="ui bottom attached borderless menu">
|
||||
<div class="item">
|
||||
<!-- TODO: add advanced search -->
|
||||
<div class="ui icon input" [class.loading]="searchService.isLoading()">
|
||||
<div class="ui icon input" [class.loading]="isLoading()">
|
||||
<input #searchBox type="text" placeholder=" Search..." (keyup.enter)="onSearch(searchBox.value)">
|
||||
<i class="search icon"></i>
|
||||
<i id="searchIcon" class="link icon" [ngClass]="isError ? 'red exclamation triangle' : 'search'"
|
||||
data-content="Failed to connect to the Bridge database" data-position="bottom right"></i>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div #typeDropdown class="ui item dropdown">
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
#searchIcon {
|
||||
cursor: default;
|
||||
}
|
||||
@@ -8,13 +8,25 @@ import { SearchService } from 'src/app/core/services/search.service'
|
||||
})
|
||||
export class SearchBarComponent implements AfterViewInit {
|
||||
|
||||
isError = false
|
||||
|
||||
constructor(public searchService: SearchService) { }
|
||||
|
||||
ngAfterViewInit() {
|
||||
$('.ui.dropdown').dropdown()
|
||||
$('#searchIcon').popup({
|
||||
onShow: () => this.isError // Only show the popup if there is an error
|
||||
})
|
||||
this.searchService.onSearchError(() => {
|
||||
this.isError = true
|
||||
})
|
||||
}
|
||||
|
||||
onSearch(query: string) {
|
||||
this.searchService.newSearch(query)
|
||||
}
|
||||
|
||||
isLoading() {
|
||||
return this.searchService.isLoading()
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,12 @@ export class SearchService {
|
||||
if (this.awaitingResults) { return }
|
||||
this.awaitingResults = true
|
||||
this.currentQuery = { query, type: SearchType.Any, offset: 0, length: 50 + 1 } // TODO: make length a setting
|
||||
this.results = this.trimLastChart(await this.electronService.invoke('song-search', this.currentQuery))
|
||||
try {
|
||||
this.results = this.trimLastChart(await this.electronService.invoke('song-search', this.currentQuery))
|
||||
} catch (err) {
|
||||
this.results = []
|
||||
this.resultsChangedEmitter.error(undefined)
|
||||
}
|
||||
this.awaitingResults = false
|
||||
|
||||
this.resultsChangedEmitter.emit(this.results)
|
||||
@@ -49,6 +54,14 @@ export class SearchService {
|
||||
this.newResultsEmitter.subscribe(callback)
|
||||
}
|
||||
|
||||
/**
|
||||
* Event emitted when a search fails.
|
||||
* (emitted before `onSearchChanged`)
|
||||
*/
|
||||
onSearchError(callback: () => void) {
|
||||
this.resultsChangedEmitter.subscribe(() => { /** Do nothing */ }, callback)
|
||||
}
|
||||
|
||||
get resultCount() {
|
||||
return this.results.length
|
||||
}
|
||||
|
||||
@@ -28,13 +28,11 @@ class UpdateChecker {
|
||||
|
||||
private registerUpdaterListeners() {
|
||||
autoUpdater.on('error', (err: Error) => {
|
||||
console.log('error callback', err)
|
||||
emitIPCEvent('update-error', err)
|
||||
})
|
||||
|
||||
autoUpdater.on('update-available', (info: UpdateInfo) => {
|
||||
updateAvailable = true
|
||||
console.log('update available callback', info)
|
||||
emitIPCEvent('update-available', info)
|
||||
})
|
||||
}
|
||||
@@ -68,8 +66,7 @@ class GetCurrentVersionHandler implements IPCInvokeHandler<'get-current-version'
|
||||
* @returns the current version of Bridge.
|
||||
*/
|
||||
handler() {
|
||||
console.log('Printing version:', autoUpdater.currentVersion.raw)
|
||||
return autoUpdater.currentVersion.raw // TODO: display this on the about page
|
||||
return autoUpdater.currentVersion.raw
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import * as path from 'path'
|
||||
import { join } from 'path'
|
||||
import { app } from 'electron'
|
||||
|
||||
// Data paths
|
||||
export const dataPath = path.join(app.getPath('userData'), 'bridge_data')
|
||||
export const libraryPath = path.join(dataPath, 'library.db')
|
||||
export const settingsPath = path.join(dataPath, 'settings.json')
|
||||
export const tempPath = path.join(dataPath, 'temp')
|
||||
export const themesPath = path.join(dataPath, 'themes')
|
||||
export const dataPath = join(app.getPath('userData'), 'bridge_data')
|
||||
export const libraryPath = join(dataPath, 'library.db')
|
||||
export const settingsPath = join(dataPath, 'settings.json')
|
||||
export const tempPath = join(dataPath, 'temp')
|
||||
export const themesPath = join(dataPath, 'themes')
|
||||
|
||||
// URL
|
||||
export const serverURL = '64.53.210.87'
|
||||
export const serverURL = 'bridge-db.net'
|
||||
Reference in New Issue
Block a user