summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/api/client/exports/exports_test.go6
-rw-r--r--internal/processing/account/import.go5
-rw-r--r--internal/typeutils/csv.go57
3 files changed, 58 insertions, 10 deletions
diff --git a/internal/api/client/exports/exports_test.go b/internal/api/client/exports/exports_test.go
index 303361b86..3759ec6c1 100644
--- a/internal/api/client/exports/exports_test.go
+++ b/internal/api/client/exports/exports_test.go
@@ -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.
diff --git a/internal/processing/account/import.go b/internal/processing/account/import.go
index 200d971b8..68e843cfa 100644
--- a/internal/processing/account/import.go
+++ b/internal/processing/account/import.go
@@ -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())
diff --git a/internal/typeutils/csv.go b/internal/typeutils/csv.go
index b1e35ef1a..ae080a63f 100644
--- a/internal/typeutils/csv.go
+++ b/internal/typeutils/csv.go
@@ -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, &gtsmodel.Follow{
TargetAccount: &gtsmodel.Account{
Username: username,
Domain: domain,
},
- ShowReblogs: &showReblogs,
+ ShowReblogs: showReblogs,
+ Notify: notify,
})
}