1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

ref: remove unnecessary unicode characters

This commit is contained in:
Steven Tang 2022-02-17 22:20:22 +11:00
parent 222024dabb
commit 6d762f5fd6
No known key found for this signature in database
GPG Key ID: AA0C5A4496B7ADF5
17 changed files with 35 additions and 35 deletions

View File

@ -269,12 +269,12 @@ func IsDev(env string) bool {
func readColors() map[string]map[string]string { func readColors() map[string]map[string]string {
// Read language colors // Read language colors
// Source: // Source:
// https://raw.githubusercontent.com/ozh/github-colors/master/colors.json // - https://raw.githubusercontent.com/ozh/github-colors/master/colors.json
// https://wakatime.com/colors/operating_systems // - https://wakatime.com/colors/operating_systems
// - https://wakatime.com/colors/editors // - https://wakatime.com/colors/editors
// Extracted from Wakatime website with XPath (see below) and did a bit of regex magic after. // Extracted from Wakatime website with XPath (see below) and did a bit of regex magic after.
// $x('//span[@class="editor-icon tip"]/@data-original-title').map(e => e.nodeValue) // - $x('//span[@class="editor-icon tip"]/@data-original-title').map(e => e.nodeValue)
// $x('//span[@class="editor-icon tip"]/div[1]/text()').map(e => e.nodeValue) // - $x('//span[@class="editor-icon tip"]/div[1]/text()').map(e => e.nodeValue)
raw := data.ColorsFile raw := data.ColorsFile
if IsDev(env) { if IsDev(env) {

View File

@ -140,7 +140,7 @@ func initSentry(config sentryConfig, debug bool) {
return event return event
}, },
}); err != nil { }); err != nil {
logbuch.Fatal("failed to initialized sentry %v", err) logbuch.Fatal("failed to initialized sentry - %v", err)
} }
} }

View File

@ -105,7 +105,7 @@ func (m *WakatimeRelayMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Reque
func (m *WakatimeRelayMiddleware) send(method, url string, body io.Reader, headers http.Header, forUser *models.User) { func (m *WakatimeRelayMiddleware) send(method, url string, body io.Reader, headers http.Header, forUser *models.User) {
request, err := http.NewRequest(method, url, body) request, err := http.NewRequest(method, url, body)
if err != nil { if err != nil {
logbuch.Warn("error constructing relayed request %v", err) logbuch.Warn("error constructing relayed request - %v", err)
return return
} }
@ -117,7 +117,7 @@ func (m *WakatimeRelayMiddleware) send(method, url string, body io.Reader, heade
response, err := m.httpClient.Do(request) response, err := m.httpClient.Do(request)
if err != nil { if err != nil {
logbuch.Warn("error executing relayed request %v", err) logbuch.Warn("error executing relayed request - %v", err)
return return
} }

View File

@ -46,7 +46,7 @@ func RunPreMigrations(db *gorm.DB, cfg *config.Config) {
for _, m := range preMigrations { for _, m := range preMigrations {
logbuch.Info("potentially running migration '%s'", m.name) logbuch.Info("potentially running migration '%s'", m.name)
if err := m.f(db, cfg); err != nil { if err := m.f(db, cfg); err != nil {
logbuch.Fatal("migration '%s' failed %v", m.name, err) logbuch.Fatal("migration '%s' failed - %v", m.name, err)
} }
} }
} }
@ -57,7 +57,7 @@ func RunPostMigrations(db *gorm.DB, cfg *config.Config) {
for _, m := range postMigrations { for _, m := range postMigrations {
logbuch.Info("potentially running migration '%s'", m.name) logbuch.Info("potentially running migration '%s'", m.name)
if err := m.f(db, cfg); err != nil { if err := m.f(db, cfg); err != nil {
logbuch.Fatal("migration '%s' failed %v", m.name, err) logbuch.Fatal("migration '%s' failed - %v", m.name, err)
} }
} }
} }

View File

@ -40,7 +40,7 @@ func NewDurationFromHeartbeat(h *Heartbeat) *Duration {
func (d *Duration) Hashed() *Duration { func (d *Duration) Hashed() *Duration {
hash, err := hashstructure.Hash(d, hashstructure.FormatV2, nil) hash, err := hashstructure.Hash(d, hashstructure.FormatV2, nil)
if err != nil { if err != nil {
logbuch.Error("CRITICAL ERROR: failed to hash struct %v", err) logbuch.Error("CRITICAL ERROR: failed to hash struct - %v", err)
} }
d.GroupHash = fmt.Sprintf("%x", hash) d.GroupHash = fmt.Sprintf("%x", hash)
return d return d

View File

@ -103,7 +103,7 @@ func (f *Filters) IsEmpty() bool {
func (f *Filters) Hash() string { func (f *Filters) Hash() string {
hash, err := hashstructure.Hash(f, hashstructure.FormatV2, nil) hash, err := hashstructure.Hash(f, hashstructure.FormatV2, nil)
if err != nil { if err != nil {
logbuch.Error("CRITICAL ERROR: failed to hash struct %v", err) logbuch.Error("CRITICAL ERROR: failed to hash struct - %v", err)
} }
return fmt.Sprintf("%x", hash) // "uint64 values with high bit set are not supported" return fmt.Sprintf("%x", hash) // "uint64 values with high bit set are not supported"
} }

View File

@ -94,7 +94,7 @@ func (h *Heartbeat) String() string {
func (h *Heartbeat) Hashed() *Heartbeat { func (h *Heartbeat) Hashed() *Heartbeat {
hash, err := hashstructure.Hash(h, hashstructure.FormatV2, nil) hash, err := hashstructure.Hash(h, hashstructure.FormatV2, nil)
if err != nil { if err != nil {
logbuch.Error("CRITICAL ERROR: failed to hash struct %v", err) logbuch.Error("CRITICAL ERROR: failed to hash struct - %v", err)
} }
h.Hash = fmt.Sprintf("%x", hash) // "uint64 values with high bit set are not supported" h.Hash = fmt.Sprintf("%x", hash) // "uint64 values with high bit set are not supported"
return h return h

View File

@ -98,7 +98,7 @@ func (h *HeartbeatApiHandler) Post(w http.ResponseWriter, r *http.Request) {
if err := h.heartbeatSrvc.InsertBatch(heartbeats); err != nil { if err := h.heartbeatSrvc.InsertBatch(heartbeats); err != nil {
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(conf.ErrInternalServerError)) w.Write([]byte(conf.ErrInternalServerError))
conf.Log().Request(r).Error("failed to batch-insert heartbeats %v", err) conf.Log().Request(r).Error("failed to batch-insert heartbeats - %v", err)
return return
} }
@ -107,7 +107,7 @@ func (h *HeartbeatApiHandler) Post(w http.ResponseWriter, r *http.Request) {
if _, err := h.userSrvc.Update(user); err != nil { if _, err := h.userSrvc.Update(user); err != nil {
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(conf.ErrInternalServerError)) w.Write([]byte(conf.ErrInternalServerError))
conf.Log().Request(r).Error("failed to update user %v", err) conf.Log().Request(r).Error("failed to update user - %v", err)
return return
} }
} }

View File

@ -260,7 +260,7 @@ func (h *MetricsHandler) getAdminMetrics(user *models.User) (*mm.Metrics, error)
activeUsers, err := h.userSrvc.GetActive(false) activeUsers, err := h.userSrvc.GetActive(false)
if err != nil { if err != nil {
logbuch.Error("failed to retrieve active users for metric %v", err) logbuch.Error("failed to retrieve active users for metric - %v", err)
return nil, err return nil, err
} }

View File

@ -284,7 +284,7 @@ func (h *LoginHandler) PostResetPassword(w http.ResponseWriter, r *http.Request)
go func(user *models.User) { go func(user *models.User) {
link := fmt.Sprintf("%s/set-password?token=%s", h.config.Server.GetPublicUrl(), user.ResetToken) link := fmt.Sprintf("%s/set-password?token=%s", h.config.Server.GetPublicUrl(), user.ResetToken)
if err := h.mailSrvc.SendPasswordReset(user, link); err != nil { if err := h.mailSrvc.SendPasswordReset(user, link); err != nil {
conf.Log().Request(r).Error("failed to send password reset mail to %s %v", user.ID, err) conf.Log().Request(r).Error("failed to send password reset mail to %s - %v", user.ID, err)
} else { } else {
logbuch.Info("sent password reset mail to %s", user.ID) logbuch.Info("sent password reset mail to %s", user.ID)
} }

View File

@ -492,7 +492,7 @@ func (h *SettingsHandler) actionImportWakatime(w http.ResponseWriter, r *http.Re
insert := func(batch []*models.Heartbeat) { insert := func(batch []*models.Heartbeat) {
if err := h.heartbeatSrvc.InsertBatch(batch); err != nil { if err := h.heartbeatSrvc.InsertBatch(batch); err != nil {
logbuch.Warn("failed to insert imported heartbeat, already existing? %v", err) logbuch.Warn("failed to insert imported heartbeat, already existing? - %v", err)
} }
} }
@ -518,13 +518,13 @@ func (h *SettingsHandler) actionImportWakatime(w http.ResponseWriter, r *http.Re
if !user.HasData { if !user.HasData {
user.HasData = true user.HasData = true
if _, err := h.userSrvc.Update(user); err != nil { if _, err := h.userSrvc.Update(user); err != nil {
conf.Log().Request(r).Error("failed to set 'has_data' flag for user %s %v", user.ID, err) conf.Log().Request(r).Error("failed to set 'has_data' flag for user %s - %v", user.ID, err)
} }
} }
if user.Email != "" { if user.Email != "" {
if err := h.mailSrvc.SendImportNotification(user, time.Now().Sub(start), int(countAfter-countBefore)); err != nil { if err := h.mailSrvc.SendImportNotification(user, time.Now().Sub(start), int(countAfter-countBefore)); err != nil {
conf.Log().Request(r).Error("failed to send import notification mail to %s %v", user.ID, err) conf.Log().Request(r).Error("failed to send import notification mail to %s - %v", user.ID, err)
} else { } else {
logbuch.Info("sent import notification mail to %s", user.ID) logbuch.Info("sent import notification mail to %s", user.ID)
} }
@ -546,11 +546,11 @@ func (h *SettingsHandler) actionRegenerateSummaries(w http.ResponseWriter, r *ht
go func(user *models.User) { go func(user *models.User) {
if err := h.regenerateSummaries(user); err != nil { if err := h.regenerateSummaries(user); err != nil {
conf.Log().Request(r).Error("failed to regenerate summaries for user '%s' %v", user.ID, err) conf.Log().Request(r).Error("failed to regenerate summaries for user '%s' - %v", user.ID, err)
} }
}(middlewares.GetPrincipal(r)) }(middlewares.GetPrincipal(r))
return http.StatusAccepted, "summaries are being regenerated this may take a up to a couple of minutes, please come back later", "" return http.StatusAccepted, "summaries are being regenerated - this may take a up to a couple of minutes, please come back later", ""
} }
func (h *SettingsHandler) actionDeleteUser(w http.ResponseWriter, r *http.Request) (int, string, string) { func (h *SettingsHandler) actionDeleteUser(w http.ResponseWriter, r *http.Request) (int, string, string) {
@ -563,7 +563,7 @@ func (h *SettingsHandler) actionDeleteUser(w http.ResponseWriter, r *http.Reques
logbuch.Info("deleting user '%s' shortly", user.ID) logbuch.Info("deleting user '%s' shortly", user.ID)
time.Sleep(5 * time.Minute) time.Sleep(5 * time.Minute)
if err := h.userSrvc.Delete(user); err != nil { if err := h.userSrvc.Delete(user); err != nil {
conf.Log().Request(r).Error("failed to delete user '%s' %v", user.ID, err) conf.Log().Request(r).Error("failed to delete user '%s' - %v", user.ID, err)
} else { } else {
logbuch.Info("successfully deleted user '%s'", user.ID) logbuch.Info("successfully deleted user '%s'", user.ID)
} }

View File

@ -84,7 +84,7 @@ func (srv *AggregationService) Run(userIds map[string]bool) error {
func (srv *AggregationService) summaryWorker(jobs <-chan *AggregationJob, summaries chan<- *models.Summary) { func (srv *AggregationService) summaryWorker(jobs <-chan *AggregationJob, summaries chan<- *models.Summary) {
for job := range jobs { for job := range jobs {
if summary, err := srv.summaryService.Summarize(job.From, job.To, &models.User{ID: job.UserID}, nil); err != nil { if summary, err := srv.summaryService.Summarize(job.From, job.To, &models.User{ID: job.UserID}, nil); err != nil {
config.Log().Error("failed to generate summary (%v, %v, %s) %v", job.From, job.To, job.UserID, err) config.Log().Error("failed to generate summary (%v, %v, %s) - %v", job.From, job.To, job.UserID, err)
} else { } else {
logbuch.Info("successfully generated summary (%v, %v, %s)", job.From, job.To, job.UserID) logbuch.Info("successfully generated summary (%v, %v, %s)", job.From, job.To, job.UserID)
summaries <- summary summaries <- summary
@ -95,7 +95,7 @@ func (srv *AggregationService) summaryWorker(jobs <-chan *AggregationJob, summar
func (srv *AggregationService) persistWorker(summaries <-chan *models.Summary) { func (srv *AggregationService) persistWorker(summaries <-chan *models.Summary) {
for summary := range summaries { for summary := range summaries {
if err := srv.summaryService.Insert(summary); err != nil { if err := srv.summaryService.Insert(summary); err != nil {
config.Log().Error("failed to save summary (%v, %v, %s) %v", summary.UserID, summary.FromTime, summary.ToTime, err) config.Log().Error("failed to save summary (%v, %v, %s) - %v", summary.UserID, summary.FromTime, summary.ToTime, err)
} }
} }
} }

View File

@ -45,7 +45,7 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User, minFrom time.Time,
startDate, endDate, err := w.fetchRange(baseUrl) startDate, endDate, err := w.fetchRange(baseUrl)
if err != nil { if err != nil {
config.Log().Error("failed to fetch date range while importing wakatime heartbeats for user '%s' %v", user.ID, err) config.Log().Error("failed to fetch date range while importing wakatime heartbeats for user '%s' - %v", user.ID, err)
return return
} }
@ -58,13 +58,13 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User, minFrom time.Time,
userAgents, err := w.fetchUserAgents(baseUrl) userAgents, err := w.fetchUserAgents(baseUrl)
if err != nil { if err != nil {
config.Log().Error("failed to fetch user agents while importing wakatime heartbeats for user '%s' %v", user.ID, err) config.Log().Error("failed to fetch user agents while importing wakatime heartbeats for user '%s' - %v", user.ID, err)
return return
} }
machinesNames, err := w.fetchMachineNames(baseUrl) machinesNames, err := w.fetchMachineNames(baseUrl)
if err != nil { if err != nil {
config.Log().Error("failed to fetch machine names while importing wakatime heartbeats for user '%s' %v", user.ID, err) config.Log().Error("failed to fetch machine names while importing wakatime heartbeats for user '%s' - %v", user.ID, err)
return return
} }
@ -76,7 +76,7 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User, minFrom time.Time,
for _, d := range days { for _, d := range days {
if err := sem.Acquire(ctx, 1); err != nil { if err := sem.Acquire(ctx, 1); err != nil {
logbuch.Error("failed to acquire semaphore %v", err) logbuch.Error("failed to acquire semaphore - %v", err)
break break
} }
@ -87,7 +87,7 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User, minFrom time.Time,
d := day.Format(config.SimpleDateFormat) d := day.Format(config.SimpleDateFormat)
heartbeats, err := w.fetchHeartbeats(d, baseUrl) heartbeats, err := w.fetchHeartbeats(d, baseUrl)
if err != nil { if err != nil {
config.Log().Error("failed to fetch heartbeats for day '%s' and user '%s' &v", d, user.ID, err) config.Log().Error("failed to fetch heartbeats for day '%s' and user '%s' - &v", d, user.ID, err)
} }
for _, h := range heartbeats { for _, h := range heartbeats {

View File

@ -89,7 +89,7 @@ func (srv *ReportService) SyncSchedule(u *models.User) bool {
At(t). At(t).
Tag(u.ID). Tag(u.ID).
Do(srv.Run, u, 7*24*time.Hour); err != nil { Do(srv.Run, u, 7*24*time.Hour); err != nil {
config.Log().Error("failed to schedule report job for user '%s' %v", u.ID, err) config.Log().Error("failed to schedule report job for user '%s' - %v", u.ID, err)
} else { } else {
logbuch.Info("next report for user %s is scheduled for %v", u.ID, job.NextRun()) logbuch.Info("next report for user %s is scheduled for %v", u.ID, job.NextRun())
} }
@ -114,7 +114,7 @@ func (srv *ReportService) Run(user *models.User, duration time.Duration) error {
summary, err := srv.summaryService.Aliased(start, end, user, srv.summaryService.Retrieve, nil, false) summary, err := srv.summaryService.Aliased(start, end, user, srv.summaryService.Retrieve, nil, false)
if err != nil { if err != nil {
config.Log().Error("failed to generate report for '%s' %v", user.ID, err) config.Log().Error("failed to generate report for '%s' - %v", user.ID, err)
return err return err
} }
@ -126,7 +126,7 @@ func (srv *ReportService) Run(user *models.User, duration time.Duration) error {
} }
if err := srv.mailService.SendReport(user, report); err != nil { if err := srv.mailService.SendReport(user, report); err != nil {
config.Log().Error("failed to send report for '%s' %v", user.ID, err) config.Log().Error("failed to send report for '%s' - %v", user.ID, err)
return err return err
} }

View File

@ -30,7 +30,7 @@ done
echo "" echo ""
echo "Running test collection ..." echo "Running test collection ..."
newman run "Wakapi API Tests.postman_collection.json" newman run "wakapi_api_tests.postman_collection.json"
exit_code=$? exit_code=$?
echo "Shutting down Wakapi ..." echo "Shutting down Wakapi ..."

View File

@ -12,7 +12,7 @@
<div class="absolute flex top-0 right-0 mr-8 mt-10 py-2"> <div class="absolute flex top-0 right-0 mr-8 mt-10 py-2">
<div class="mx-1"> <div class="mx-1">
<a href="login" class="btn-primary"> <a href="login" class="btn-primary">
<span class="iconify inline" data-icon="fluent:key-24-filled"></span> &nbsp;Login</a> <span class="iconify inline" data-icon="fluent:key-24-filled"></span> &nbsp;Login</a>
</div> </div>
</div> </div>