mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 02:42:25 -05: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…
	
	Add table
		Add a link
		
	
		Reference in a new issue