mirror of
https://github.com/ergochat/ergo.git
synced 2025-01-11 04:32:39 +01:00
parent
4749d7e776
commit
8c556fe8c5
@ -2294,7 +2294,6 @@ type ReplayJoinsSetting uint
|
|||||||
const (
|
const (
|
||||||
ReplayJoinsCommandsOnly = iota // replay in HISTORY or CHATHISTORY output
|
ReplayJoinsCommandsOnly = iota // replay in HISTORY or CHATHISTORY output
|
||||||
ReplayJoinsAlways // replay in HISTORY, CHATHISTORY, or autoreplay
|
ReplayJoinsAlways // replay in HISTORY, CHATHISTORY, or autoreplay
|
||||||
ReplayJoinsNever // never replay
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func replayJoinsSettingFromString(str string) (result ReplayJoinsSetting, err error) {
|
func replayJoinsSettingFromString(str string) (result ReplayJoinsSetting, err error) {
|
||||||
@ -2303,8 +2302,6 @@ func replayJoinsSettingFromString(str string) (result ReplayJoinsSetting, err er
|
|||||||
result = ReplayJoinsCommandsOnly
|
result = ReplayJoinsCommandsOnly
|
||||||
case "always":
|
case "always":
|
||||||
result = ReplayJoinsAlways
|
result = ReplayJoinsAlways
|
||||||
case "never":
|
|
||||||
result = ReplayJoinsNever
|
|
||||||
default:
|
default:
|
||||||
err = errInvalidParams
|
err = errInvalidParams
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ const (
|
|||||||
// 'version' of the database schema
|
// 'version' of the database schema
|
||||||
keySchemaVersion = "db.version"
|
keySchemaVersion = "db.version"
|
||||||
// latest schema of the db
|
// latest schema of the db
|
||||||
latestDbSchema = 21
|
latestDbSchema = 22
|
||||||
|
|
||||||
keyCloakSecret = "crypto.cloak_secret"
|
keyCloakSecret = "crypto.cloak_secret"
|
||||||
)
|
)
|
||||||
@ -1059,6 +1059,56 @@ func schemaChangeV20To21(config *Config, tx *buntdb.Tx) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #1676: we used to have ReplayJoinsNever, now it's desupported
|
||||||
|
func schemaChangeV21To22(config *Config, tx *buntdb.Tx) error {
|
||||||
|
type accountSettingsv22 struct {
|
||||||
|
AutoreplayLines *int
|
||||||
|
NickEnforcement NickEnforcementMethod
|
||||||
|
AllowBouncer MulticlientAllowedSetting
|
||||||
|
ReplayJoins ReplayJoinsSetting
|
||||||
|
AlwaysOn PersistentStatus
|
||||||
|
AutoreplayMissed bool
|
||||||
|
DMHistory HistoryStatus
|
||||||
|
AutoAway PersistentStatus
|
||||||
|
Email string
|
||||||
|
}
|
||||||
|
|
||||||
|
var accounts []string
|
||||||
|
var serializedSettings []string
|
||||||
|
settingsPrefix := "account.settings "
|
||||||
|
tx.AscendGreaterOrEqual("", settingsPrefix, func(key, value string) bool {
|
||||||
|
if !strings.HasPrefix(key, settingsPrefix) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
account := strings.TrimPrefix(key, settingsPrefix)
|
||||||
|
if _, err := tx.Get("account.verified " + account); err != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
var settings accountSettingsv22
|
||||||
|
err := json.Unmarshal([]byte(value), &settings)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("error (v21-22) processing settings for %s: %v\n", account, err)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// if necessary, change ReplayJoinsNever (2) to ReplayJoinsCommandsOnly (0)
|
||||||
|
if settings.ReplayJoins == ReplayJoinsSetting(2) {
|
||||||
|
settings.ReplayJoins = ReplayJoinsSetting(0)
|
||||||
|
if b, err := json.Marshal(settings); err == nil {
|
||||||
|
accounts = append(accounts, account)
|
||||||
|
serializedSettings = append(serializedSettings, string(b))
|
||||||
|
} else {
|
||||||
|
log.Printf("error (v21-22) processing settings for %s: %v\n", account, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
for i, account := range accounts {
|
||||||
|
tx.Set(settingsPrefix+account, serializedSettings[i], nil)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func getSchemaChange(initialVersion int) (result SchemaChange, ok bool) {
|
func getSchemaChange(initialVersion int) (result SchemaChange, ok bool) {
|
||||||
for _, change := range allChanges {
|
for _, change := range allChanges {
|
||||||
if initialVersion == change.InitialVersion {
|
if initialVersion == change.InitialVersion {
|
||||||
@ -1169,4 +1219,9 @@ var allChanges = []SchemaChange{
|
|||||||
TargetVersion: 21,
|
TargetVersion: 21,
|
||||||
Changer: schemaChangeV20To21,
|
Changer: schemaChangeV20To21,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
InitialVersion: 21,
|
||||||
|
TargetVersion: 22,
|
||||||
|
Changer: schemaChangeV21To22,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
@ -284,8 +284,8 @@ default.`,
|
|||||||
`$bREPLAY-JOINS$b
|
`$bREPLAY-JOINS$b
|
||||||
'replay-joins' controls whether replayed channel history will include
|
'replay-joins' controls whether replayed channel history will include
|
||||||
lines for join and part. This provides more information about the context of
|
lines for join and part. This provides more information about the context of
|
||||||
messages, but may be spammy. Your options are 'always', 'never', and the default
|
messages, but may be spammy. Your options are 'always' and the default of
|
||||||
of 'commands-only' (the messages will be replayed in /HISTORY output, but not
|
'commands-only' (the messages will be replayed in CHATHISTORY output, but not
|
||||||
during autoreplay).`,
|
during autoreplay).`,
|
||||||
`$bALWAYS-ON$b
|
`$bALWAYS-ON$b
|
||||||
'always-on' controls whether your nickname/identity will remain active
|
'always-on' controls whether your nickname/identity will remain active
|
||||||
@ -440,8 +440,6 @@ func displaySetting(service *ircService, settingName string, settings AccountSet
|
|||||||
service.Notice(rb, client.t("You will see JOINs and PARTs in /HISTORY output, but not in autoreplay"))
|
service.Notice(rb, client.t("You will see JOINs and PARTs in /HISTORY output, but not in autoreplay"))
|
||||||
case ReplayJoinsAlways:
|
case ReplayJoinsAlways:
|
||||||
service.Notice(rb, client.t("You will see JOINs and PARTs in /HISTORY output and in autoreplay"))
|
service.Notice(rb, client.t("You will see JOINs and PARTs in /HISTORY output and in autoreplay"))
|
||||||
case ReplayJoinsNever:
|
|
||||||
service.Notice(rb, client.t("You will not see JOINs and PARTs in /HISTORY output or in autoreplay"))
|
|
||||||
}
|
}
|
||||||
case "multiclient":
|
case "multiclient":
|
||||||
if !config.Accounts.Multiclient.Enabled {
|
if !config.Accounts.Multiclient.Enabled {
|
||||||
|
Loading…
Reference in New Issue
Block a user