mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2024-11-10 06:54:16 +00: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:
parent
84279f6a6a
commit
d4d6631435
3 changed files with 58 additions and 10 deletions
|
@ -160,9 +160,9 @@ func (suite *ExportsTestSuite) TestExports() {
|
|||
token: suite.testTokens["local_account_1"],
|
||||
user: suite.testUsers["local_account_1"],
|
||||
account: suite.testAccounts["local_account_1"],
|
||||
expect: `Account address,Show boosts
|
||||
admin@localhost:8080,true
|
||||
1happyturtle@localhost:8080,true
|
||||
expect: `Account address,Show boosts,Notify on new posts,Languages
|
||||
admin@localhost:8080,true,false,
|
||||
1happyturtle@localhost:8080,true,false,
|
||||
`,
|
||||
},
|
||||
// Export Followers.
|
||||
|
|
|
@ -188,6 +188,10 @@ func importFollowingAsyncF(
|
|||
// Show reblogs on
|
||||
// the new follow.
|
||||
showReblogs = follow.ShowReblogs
|
||||
|
||||
// Notify when new
|
||||
// follow posts.
|
||||
notify = follow.Notify
|
||||
)
|
||||
|
||||
if overwrite {
|
||||
|
@ -218,6 +222,7 @@ func importFollowingAsyncF(
|
|||
&apimodel.AccountFollowRequest{
|
||||
ID: targetAcct.ID,
|
||||
Reblogs: showReblogs,
|
||||
Notify: notify,
|
||||
},
|
||||
); errWithCode != nil {
|
||||
log.Errorf(ctx, "could not follow account: %v", errWithCode.Unwrap())
|
||||
|
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue