time exception add to error type enmu
This commit is contained in:
parent
088453f1ad
commit
b939cf1258
|
@ -1,3 +1,4 @@
|
||||||
build
|
build
|
||||||
.last_goflutter_check
|
.last_goflutter_check
|
||||||
.last_go-flutter_check
|
.last_go-flutter_check
|
||||||
|
.last_go-flutter_check
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"path"
|
"path"
|
||||||
path2 "path"
|
path2 "path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"pgo/pikapi/config"
|
"pikapi/main/config"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
_ "image/png"
|
_ "image/png"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"pgo/pikapi/database/properties"
|
"pikapi/main/database/properties"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,14 +1,81 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"github.com/go-flutter-desktop/go-flutter"
|
"github.com/go-flutter-desktop/go-flutter"
|
||||||
|
"github.com/go-flutter-desktop/go-flutter/plugin"
|
||||||
"github.com/go-flutter-desktop/plugins/url_launcher"
|
"github.com/go-flutter-desktop/plugins/url_launcher"
|
||||||
|
"github.com/go-gl/glfw/v3.3/glfw"
|
||||||
"github.com/miguelpruivo/flutter_file_picker/go"
|
"github.com/miguelpruivo/flutter_file_picker/go"
|
||||||
"pgo/cmd/plugin/pikapi"
|
"pikapi/main/controller"
|
||||||
|
"pikapi/main/database/properties"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
var options = []flutter.Option{
|
var options = []flutter.Option{
|
||||||
flutter.AddPlugin(&pikapi.Plugin{}),
|
flutter.AddPlugin(&Plugin{}),
|
||||||
flutter.AddPlugin(&file_picker.FilePickerPlugin{}),
|
flutter.AddPlugin(&file_picker.FilePickerPlugin{}),
|
||||||
flutter.AddPlugin(&url_launcher.UrlLauncherPlugin{}),
|
flutter.AddPlugin(&url_launcher.UrlLauncherPlugin{}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var eventMutex = sync.Mutex{}
|
||||||
|
var eventSink *plugin.EventSink
|
||||||
|
|
||||||
|
type EventHandler struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *EventHandler) OnListen(arguments interface{}, sink *plugin.EventSink) {
|
||||||
|
eventMutex.Lock()
|
||||||
|
defer eventMutex.Unlock()
|
||||||
|
eventSink = sink
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *EventHandler) OnCancel(arguments interface{}) {
|
||||||
|
eventMutex.Lock()
|
||||||
|
defer eventMutex.Unlock()
|
||||||
|
eventSink = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const channelName = "method"
|
||||||
|
|
||||||
|
type Plugin struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Plugin) InitPlugin(messenger plugin.BinaryMessenger) error {
|
||||||
|
|
||||||
|
channel := plugin.NewMethodChannel(messenger, channelName, plugin.StandardMethodCodec{})
|
||||||
|
|
||||||
|
channel.HandleFunc("flatInvoke", func(arguments interface{}) (interface{}, error) {
|
||||||
|
if argumentsMap, ok := arguments.(map[interface{}]interface{}); ok {
|
||||||
|
if method, ok := argumentsMap["method"].(string); ok {
|
||||||
|
if params, ok := argumentsMap["params"].(string); ok {
|
||||||
|
return controller.FlatInvoke(method, params)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, errors.New("params error")
|
||||||
|
})
|
||||||
|
|
||||||
|
exporting := plugin.NewEventChannel(messenger, "flatEvent", plugin.StandardMethodCodec{})
|
||||||
|
exporting.Handle(&EventHandler{})
|
||||||
|
|
||||||
|
controller.EventNotify = func(message string) {
|
||||||
|
eventMutex.Lock()
|
||||||
|
defer eventMutex.Unlock()
|
||||||
|
sink := eventSink
|
||||||
|
if sink != nil {
|
||||||
|
sink.Success(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil // no error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Plugin) InitPluginGLFW(window *glfw.Window) error {
|
||||||
|
window.SetSizeCallback(func(w *glfw.Window, width int, height int) {
|
||||||
|
properties.SaveProperty("window_width", strconv.Itoa(width))
|
||||||
|
properties.SaveProperty("window_height", strconv.Itoa(height))
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
package pikapi
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"github.com/go-flutter-desktop/go-flutter/plugin"
|
|
||||||
"github.com/go-gl/glfw/v3.3/glfw"
|
|
||||||
"pgo/pikapi/controller"
|
|
||||||
"pgo/pikapi/database/properties"
|
|
||||||
"strconv"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var eventMutex = sync.Mutex{}
|
|
||||||
var eventSink *plugin.EventSink
|
|
||||||
|
|
||||||
type EventHandler struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *EventHandler) OnListen(arguments interface{}, sink *plugin.EventSink) {
|
|
||||||
eventMutex.Lock()
|
|
||||||
defer eventMutex.Unlock()
|
|
||||||
eventSink = sink
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *EventHandler) OnCancel(arguments interface{}) {
|
|
||||||
eventMutex.Lock()
|
|
||||||
defer eventMutex.Unlock()
|
|
||||||
eventSink = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
const channelName = "method"
|
|
||||||
|
|
||||||
type Plugin struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *Plugin) InitPlugin(messenger plugin.BinaryMessenger) error {
|
|
||||||
|
|
||||||
channel := plugin.NewMethodChannel(messenger, channelName, plugin.StandardMethodCodec{})
|
|
||||||
|
|
||||||
channel.HandleFunc("flatInvoke", func(arguments interface{}) (interface{}, error) {
|
|
||||||
if argumentsMap, ok := arguments.(map[interface{}]interface{}); ok {
|
|
||||||
if method, ok := argumentsMap["method"].(string); ok {
|
|
||||||
if params, ok := argumentsMap["params"].(string); ok {
|
|
||||||
return controller.FlatInvoke(method, params)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, errors.New("params error")
|
|
||||||
})
|
|
||||||
|
|
||||||
exporting := plugin.NewEventChannel(messenger, "flatEvent", plugin.StandardMethodCodec{})
|
|
||||||
exporting.Handle(&EventHandler{})
|
|
||||||
|
|
||||||
controller.EventNotify = func(message string) {
|
|
||||||
eventMutex.Lock()
|
|
||||||
defer eventMutex.Unlock()
|
|
||||||
sink := eventSink
|
|
||||||
if sink != nil {
|
|
||||||
sink.Success(message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil // no error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *Plugin) InitPluginGLFW(window *glfw.Window) error {
|
|
||||||
window.SetSizeCallback(func(w *glfw.Window, width int, height int) {
|
|
||||||
properties.SaveProperty("window_width", strconv.Itoa(width))
|
|
||||||
properties.SaveProperty("window_height", strconv.Itoa(height))
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -35,8 +35,6 @@ github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KK
|
||||||
github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
|
github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
|
||||||
github.com/miguelpruivo/flutter_file_picker/go v0.0.0-20210622152105-9f0a811028a0 h1:hXl9AMW20Php3xWlWZr2Acw50tqeblLgtLfLoRCACmA=
|
github.com/miguelpruivo/flutter_file_picker/go v0.0.0-20210622152105-9f0a811028a0 h1:hXl9AMW20Php3xWlWZr2Acw50tqeblLgtLfLoRCACmA=
|
||||||
github.com/miguelpruivo/flutter_file_picker/go v0.0.0-20210622152105-9f0a811028a0/go.mod h1:csuW+TFyYKtiUwNvcvhcpyX4quPI7Pvv0SUogdqCW4I=
|
github.com/miguelpruivo/flutter_file_picker/go v0.0.0-20210622152105-9f0a811028a0/go.mod h1:csuW+TFyYKtiUwNvcvhcpyX4quPI7Pvv0SUogdqCW4I=
|
||||||
github.com/niuhuan/pica-go v0.0.0-20210923020558-090104e7b1a7 h1:E0WsH0UeFvuGiaEb1/tyy35ot76YDJKZ2q0/QjRQMWA=
|
|
||||||
github.com/niuhuan/pica-go v0.0.0-20210923020558-090104e7b1a7/go.mod h1:fx2m+OgMeEZf6/TrfblV9i85SjPsOGbnjIL2gohxP4M=
|
|
||||||
github.com/niuhuan/pica-go v0.0.0-20211008032829-544a58c56bee h1:SewxTGOkoJ3JUmLLQ1RXUcqLdifT5502QZQl09eCGL8=
|
github.com/niuhuan/pica-go v0.0.0-20211008032829-544a58c56bee h1:SewxTGOkoJ3JUmLLQ1RXUcqLdifT5502QZQl09eCGL8=
|
||||||
github.com/niuhuan/pica-go v0.0.0-20211008032829-544a58c56bee/go.mod h1:fx2m+OgMeEZf6/TrfblV9i85SjPsOGbnjIL2gohxP4M=
|
github.com/niuhuan/pica-go v0.0.0-20211008032829-544a58c56bee/go.mod h1:fx2m+OgMeEZf6/TrfblV9i85SjPsOGbnjIL2gohxP4M=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
|
|
@ -2,11 +2,11 @@ package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"path"
|
"path"
|
||||||
"pgo/pikapi/controller"
|
"pikapi/main/controller"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/network_cache"
|
"pikapi/main/database/network_cache"
|
||||||
"pgo/pikapi/database/properties"
|
"pikapi/main/database/properties"
|
||||||
"pgo/pikapi/utils"
|
"pikapi/main/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// InitApplication 由不同的平台直接调用, 根据提供的路径初始化数据库, 资料文件夹
|
// InitApplication 由不同的平台直接调用, 根据提供的路径初始化数据库, 资料文件夹
|
|
@ -9,9 +9,9 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/network_cache"
|
"pikapi/main/database/network_cache"
|
||||||
"pgo/pikapi/database/properties"
|
"pikapi/main/database/properties"
|
||||||
"regexp"
|
"regexp"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
|
@ -2,7 +2,7 @@ package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/database/comic_center"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EventNotify EventChannel 总线
|
// EventNotify EventChannel 总线
|
|
@ -5,9 +5,8 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/comic_center"
|
utils2 "pikapi/main/utils"
|
||||||
utils2 "pgo/pikapi/utils"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -316,9 +315,9 @@ func downloadThePicture(picturePoint *comic_center.ComicDownloadPicture) error {
|
||||||
// 将图片保存到文件
|
// 将图片保存到文件
|
||||||
dir := filepath.Dir(realPath)
|
dir := filepath.Dir(realPath)
|
||||||
if _, err := os.Stat(dir); os.IsNotExist(err) {
|
if _, err := os.Stat(dir); os.IsNotExist(err) {
|
||||||
os.Mkdir(dir, const_value.CreateDirMode)
|
os.Mkdir(dir, utils2.CreateDirMode)
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile(downloadPath(picturePath), buff, const_value.CreateFileMode)
|
err = ioutil.WriteFile(downloadPath(picturePath), buff, utils2.CreateFileMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
|
@ -12,8 +12,8 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/utils"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -386,11 +386,11 @@ func exportComicDownloadToJPG(params string) error {
|
||||||
}
|
}
|
||||||
dirPath := path.Join(dir, fmt.Sprintf("%s-%s", reasonablePath(comic.Title), time.Now().Format("2006_01_02_15_04_05.999")))
|
dirPath := path.Join(dir, fmt.Sprintf("%s-%s", reasonablePath(comic.Title), time.Now().Format("2006_01_02_15_04_05.999")))
|
||||||
println(fmt.Sprintf("DIR : %s", dirPath))
|
println(fmt.Sprintf("DIR : %s", dirPath))
|
||||||
err = os.Mkdir(dirPath, const_value.CreateDirMode)
|
err = os.Mkdir(dirPath, utils.CreateDirMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = os.Mkdir(path.Join(dirPath, "pictures"), const_value.CreateDirMode)
|
err = os.Mkdir(path.Join(dirPath, "pictures"), utils.CreateDirMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@ import (
|
||||||
_ "image/png"
|
_ "image/png"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/database/comic_center"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,9 +11,8 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
path2 "path"
|
path2 "path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/utils"
|
||||||
"pgo/pikapi/utils"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -168,7 +167,7 @@ func importComicDownload(zipPath string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ioutil.WriteFile(path2.Join(comicDirPath, "logo"), logoBuff, const_value.CreateFileMode)
|
ioutil.WriteFile(path2.Join(comicDirPath, "logo"), logoBuff, utils.CreateFileMode)
|
||||||
}
|
}
|
||||||
for _, ep := range jsonComicDownload.EpList {
|
for _, ep := range jsonComicDownload.EpList {
|
||||||
utils.Mkdir(path2.Join(comicDirPath, strconv.Itoa(int(ep.EpOrder))))
|
utils.Mkdir(path2.Join(comicDirPath, strconv.Itoa(int(ep.EpOrder))))
|
||||||
|
@ -184,7 +183,7 @@ func importComicDownload(zipPath string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return ioutil.WriteFile(downloadPath(picture.LocalPath), entryBuff, const_value.CreateFileMode)
|
return ioutil.WriteFile(downloadPath(picture.LocalPath), entryBuff, utils.CreateFileMode)
|
||||||
}()
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
|
@ -1,6 +1,6 @@
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import "pgo/pikapi/database/comic_center"
|
import "pikapi/main/database/comic_center"
|
||||||
|
|
||||||
type DisplayImageData struct {
|
type DisplayImageData struct {
|
||||||
FileSize int64 `json:"fileSize"`
|
FileSize int64 `json:"fileSize"`
|
|
@ -10,11 +10,10 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
path2 "path"
|
path2 "path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/database/comic_center"
|
||||||
"pgo/pikapi/database/comic_center"
|
"pikapi/main/database/network_cache"
|
||||||
"pgo/pikapi/database/network_cache"
|
"pikapi/main/database/properties"
|
||||||
"pgo/pikapi/database/properties"
|
"pikapi/main/utils"
|
||||||
"pgo/pikapi/utils"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -271,7 +270,7 @@ func downloadComicLogo(comic *comic_center.ComicDownload) {
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
comicLogoPath := path2.Join(comic.ID, "logo")
|
comicLogoPath := path2.Join(comic.ID, "logo")
|
||||||
ioutil.WriteFile(downloadPath(comicLogoPath), buff, const_value.CreateFileMode)
|
ioutil.WriteFile(downloadPath(comicLogoPath), buff, utils.CreateFileMode)
|
||||||
comic_center.UpdateDownloadLogo(
|
comic_center.UpdateDownloadLogo(
|
||||||
comic.ID,
|
comic.ID,
|
||||||
int64(len(buff)),
|
int64(len(buff)),
|
|
@ -1,6 +1,6 @@
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import "pgo/pikapi/database/comic_center"
|
import "pikapi/main/database/comic_center"
|
||||||
|
|
||||||
// 根据comicId,获得标题,但是必须是下载的内容(暂未使用)
|
// 根据comicId,获得标题,但是必须是下载的内容(暂未使用)
|
||||||
func specialDownloadTitle(comicId string) (string, error) {
|
func specialDownloadTitle(comicId string) (string, error) {
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
"path"
|
"path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/utils"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ func InitDBConnect(databaseDir string) {
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
defer mutex.Unlock()
|
defer mutex.Unlock()
|
||||||
var err error
|
var err error
|
||||||
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "comic_center.db")), const_value.GormConfig)
|
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "comic_center.db")), utils.GormConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("failed to connect database")
|
panic("failed to connect database")
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
"path"
|
"path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/utils"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,7 @@ func InitDBConnect(databaseDir string) {
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
defer mutex.Unlock()
|
defer mutex.Unlock()
|
||||||
var err error
|
var err error
|
||||||
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "network_cache.db")), const_value.GormConfig)
|
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "network_cache.db")), utils.GormConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("failed to connect database")
|
panic("failed to connect database")
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
"path"
|
"path"
|
||||||
"pgo/pikapi/const_value"
|
"pikapi/main/utils"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ func InitDBConnect(databaseDir string) {
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
defer mutex.Unlock()
|
defer mutex.Unlock()
|
||||||
var err error
|
var err error
|
||||||
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "properties.db")), const_value.GormConfig)
|
db, err = gorm.Open(sqlite.Open(path.Join(databaseDir, "properties.db")), utils.GormConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("failed to connect database")
|
panic("failed to connect database")
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package const_value
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
|
@ -2,13 +2,12 @@ package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"pgo/pikapi/const_value"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Mkdir(dir string) {
|
func Mkdir(dir string) {
|
||||||
if _, err := os.Stat(dir); err != nil {
|
if _, err := os.Stat(dir); err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
err = os.MkdirAll(dir, const_value.CreateDirMode)
|
err = os.MkdirAll(dir, CreateDirMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
package mobile
|
package mobile
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"pgo/pikapi/config"
|
"pikapi/main/config"
|
||||||
"pgo/pikapi/controller"
|
"pikapi/main/controller"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitApplication(application string) {
|
func InitApplication(application string) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
const ERROR_TYPE_NETWORK = "NETWORK_ERROR";
|
const ERROR_TYPE_NETWORK = "NETWORK_ERROR";
|
||||||
const ERROR_TYPE_PERMISSION = "PERMISSION_ERROR";
|
const ERROR_TYPE_PERMISSION = "PERMISSION_ERROR";
|
||||||
|
const ERROR_TYPE_TIME = "TIME_ERROR";
|
||||||
|
|
||||||
// 错误的类型, 方便照展示和谐的提示
|
// 错误的类型, 方便照展示和谐的提示
|
||||||
String errorType(String error) {
|
String errorType(String error) {
|
||||||
|
@ -15,5 +16,8 @@ String errorType(String error) {
|
||||||
if (error.contains("permission denied")) {
|
if (error.contains("permission denied")) {
|
||||||
return ERROR_TYPE_PERMISSION;
|
return ERROR_TYPE_PERMISSION;
|
||||||
}
|
}
|
||||||
|
if (error.contains("time is not synchronize")) {
|
||||||
|
return ERROR_TYPE_TIME;
|
||||||
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,10 +157,19 @@ class _AccountScreenState extends State<AccountScreen> {
|
||||||
setState(() {
|
setState(() {
|
||||||
_logging = false;
|
_logging = false;
|
||||||
});
|
});
|
||||||
|
var message = "请检查账号密码";
|
||||||
|
switch (errorType("$e")) {
|
||||||
|
case ERROR_TYPE_NETWORK:
|
||||||
|
message = "网络不通";
|
||||||
|
break;
|
||||||
|
case ERROR_TYPE_TIME:
|
||||||
|
message = "请检查设备时间";
|
||||||
|
break;
|
||||||
|
}
|
||||||
alertDialog(
|
alertDialog(
|
||||||
context,
|
context,
|
||||||
'登录失败',
|
'登录失败',
|
||||||
errorType("$e") == ERROR_TYPE_NETWORK ? '网络不通' : '请检查账号密码',
|
"$message\n$e",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@ class ContentError extends StatelessWidget {
|
||||||
case ERROR_TYPE_PERMISSION:
|
case ERROR_TYPE_PERMISSION:
|
||||||
message = "没有权限或路径不可用";
|
message = "没有权限或路径不可用";
|
||||||
break;
|
break;
|
||||||
|
case ERROR_TYPE_TIME:
|
||||||
|
message = "请检查设备时间";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
message = "啊哦, 被玩坏了";
|
message = "啊哦, 被玩坏了";
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue