mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[bugfix] Be more lenient when parsing mastodown following.csv (#3311)
* [bugfix] Be more lenient when parsing mastodown following.csv * use follow.Notify
This commit is contained in:
@ -90,6 +90,8 @@ func (c *Converter) FollowingToCSV(
|
||||
records[0] = []string{
|
||||
"Account address",
|
||||
"Show boosts",
|
||||
"Notify on new posts",
|
||||
"Languages",
|
||||
}
|
||||
|
||||
// We need to know our own domain for this.
|
||||
@ -130,6 +132,10 @@ func (c *Converter) FollowingToCSV(
|
||||
follow.TargetAccount.Username + "@" + domain,
|
||||
// Show boosts: eg., true
|
||||
strconv.FormatBool(*follow.ShowReblogs),
|
||||
// Notify on new posts, eg., true
|
||||
strconv.FormatBool(*follow.Notify),
|
||||
// Languages: compat only, leave blank.
|
||||
"",
|
||||
})
|
||||
}
|
||||
|
||||
@ -387,12 +393,20 @@ func (c *Converter) CSVToFollowing(
|
||||
)
|
||||
|
||||
for _, record := range records {
|
||||
if len(record) != 2 {
|
||||
recordLen := len(record)
|
||||
|
||||
// Older versions of this Masto CSV
|
||||
// schema may not include "Show boosts",
|
||||
// "Notify on new posts", or "Languages",
|
||||
// so be lenient here in what we accept.
|
||||
if recordLen == 0 ||
|
||||
recordLen > 4 {
|
||||
// Badly formatted,
|
||||
// skip this one.
|
||||
continue
|
||||
}
|
||||
|
||||
// "Account address"
|
||||
namestring := record[0]
|
||||
if namestring == "" {
|
||||
// Badly formatted,
|
||||
@ -400,6 +414,12 @@ func (c *Converter) CSVToFollowing(
|
||||
continue
|
||||
}
|
||||
|
||||
if namestring == "Account address" {
|
||||
// CSV header row,
|
||||
// skip this one.
|
||||
continue
|
||||
}
|
||||
|
||||
// Prepend with "@"
|
||||
// if not included.
|
||||
if namestring[0] != '@' {
|
||||
@ -419,20 +439,43 @@ func (c *Converter) CSVToFollowing(
|
||||
domain = ""
|
||||
}
|
||||
|
||||
showReblogs, err := strconv.ParseBool(record[1])
|
||||
if err != nil {
|
||||
// Badly formatted,
|
||||
// skip this one.
|
||||
continue
|
||||
// "Show boosts"
|
||||
var showReblogs *bool
|
||||
if recordLen > 1 {
|
||||
b, err := strconv.ParseBool(record[1])
|
||||
if err != nil {
|
||||
// Badly formatted,
|
||||
// skip this one.
|
||||
continue
|
||||
}
|
||||
showReblogs = &b
|
||||
}
|
||||
|
||||
// "Notify on new posts"
|
||||
var notify *bool
|
||||
if recordLen > 2 {
|
||||
b, err := strconv.ParseBool(record[2])
|
||||
if err != nil {
|
||||
// Badly formatted,
|
||||
// skip this one.
|
||||
continue
|
||||
}
|
||||
notify = &b
|
||||
}
|
||||
|
||||
// TODO: "Languages"
|
||||
//
|
||||
// Ignore this for now as we
|
||||
// don't do anything with it.
|
||||
|
||||
// Looks good, whack it in the slice.
|
||||
follows = append(follows, >smodel.Follow{
|
||||
TargetAccount: >smodel.Account{
|
||||
Username: username,
|
||||
Domain: domain,
|
||||
},
|
||||
ShowReblogs: &showReblogs,
|
||||
ShowReblogs: showReblogs,
|
||||
Notify: notify,
|
||||
})
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user