Merge branch 'main' into glitch-soc/merge-upstream
This commit is contained in:
		
						commit
						d1c87be8cf
					
				| @ -42,7 +42,7 @@ class Settings::DeletesController < Settings::BaseController | ||||
|   end | ||||
| 
 | ||||
|   def destroy_account! | ||||
|     current_account.suspend!(origin: :local) | ||||
|     current_account.suspend!(origin: :local, block_email: false) | ||||
|     AccountDeletionWorker.perform_async(current_user.account_id) | ||||
|     sign_out | ||||
|   end | ||||
|  | ||||
| @ -6,6 +6,10 @@ import { multiply } from 'color-blend'; | ||||
| 
 | ||||
| export default class ModalRoot extends React.PureComponent { | ||||
| 
 | ||||
|   static contextTypes = { | ||||
|     router: PropTypes.object, | ||||
|   }; | ||||
| 
 | ||||
|   static propTypes = { | ||||
|     children: PropTypes.node, | ||||
|     onClose: PropTypes.func.isRequired, | ||||
|  | ||||
| @ -21,7 +21,7 @@ export default class VideoModal extends ImmutablePureComponent { | ||||
|   }; | ||||
| 
 | ||||
|   componentDidMount () { | ||||
|     const { media, onChangeBackgroundColor, onClose } = this.props; | ||||
|     const { media, onChangeBackgroundColor } = this.props; | ||||
| 
 | ||||
|     const backgroundColor = getAverageFromBlurhash(media.get('blurhash')); | ||||
| 
 | ||||
|  | ||||
| @ -5,11 +5,11 @@ import { Stack as ImmutableStack, Map as ImmutableMap } from 'immutable'; | ||||
| export default function modal(state = ImmutableStack(), action) { | ||||
|   switch(action.type) { | ||||
|   case MODAL_OPEN: | ||||
|         return state.unshift(ImmutableMap({ modalType: action.modalType, modalProps: action.modalProps })); | ||||
|     return state.unshift(ImmutableMap({ modalType: action.modalType, modalProps: action.modalProps })); | ||||
|   case MODAL_CLOSE: | ||||
|     return (action.modalType === undefined || action.modalType === state.getIn([0, 'modalType'])) ? state.shift() : state; | ||||
|   case TIMELINE_DELETE: | ||||
|         return state.filterNot((modal) => modal.get('modalProps').statusId === action.id); | ||||
|     return state.filterNot((modal) => modal.get('modalProps').statusId === action.id); | ||||
|   default: | ||||
|     return state; | ||||
|   } | ||||
|  | ||||
| @ -279,39 +279,10 @@ class Formatter | ||||
|     result.flatten.join | ||||
|   end | ||||
| 
 | ||||
|   UNICODE_ESCAPE_BLACKLIST_RE = /\p{Z}|\p{P}/ | ||||
| 
 | ||||
|   def utf8_friendly_extractor(text, options = {}) | ||||
|     old_to_new_index = [0] | ||||
| 
 | ||||
|     escaped = text.chars.map do |c| | ||||
|       output = begin | ||||
|         if c.ord.to_s(16).length > 2 && !UNICODE_ESCAPE_BLACKLIST_RE.match?(c) | ||||
|           CGI.escape(c) | ||||
|         else | ||||
|           c | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       old_to_new_index << old_to_new_index.last + output.length | ||||
| 
 | ||||
|       output | ||||
|     end.join | ||||
| 
 | ||||
|     # Note: I couldn't obtain list_slug with @user/list-name format | ||||
|     # for mention so this requires additional check | ||||
|     special = Extractor.extract_urls_with_indices(escaped, options).map do |extract| | ||||
|       new_indices = [ | ||||
|         old_to_new_index.find_index(extract[:indices].first), | ||||
|         old_to_new_index.find_index(extract[:indices].last), | ||||
|       ] | ||||
| 
 | ||||
|       next extract.merge( | ||||
|         indices: new_indices, | ||||
|         url: text[new_indices.first..new_indices.last - 1] | ||||
|       ) | ||||
|     end | ||||
| 
 | ||||
|     special = Extractor.extract_urls_with_indices(text, options) | ||||
|     standard = Extractor.extract_entities_with_indices(text, options) | ||||
|     extra = Extractor.extract_extra_uris_with_indices(text, options) | ||||
| 
 | ||||
|  | ||||
| @ -236,11 +236,11 @@ class Account < ApplicationRecord | ||||
|     suspended? && deletion_request.present? | ||||
|   end | ||||
| 
 | ||||
|   def suspend!(date: Time.now.utc, origin: :local) | ||||
|   def suspend!(date: Time.now.utc, origin: :local, block_email: true) | ||||
|     transaction do | ||||
|       create_deletion_request! | ||||
|       update!(suspended_at: date, suspension_origin: origin) | ||||
|       create_canonical_email_block! | ||||
|       create_canonical_email_block! if block_email | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | ||||
| @ -24,6 +24,10 @@ module Twitter::TwitterText | ||||
|         ) | ||||
|       \) | ||||
|     /iox | ||||
|     REGEXEN[:valid_iri_ucschar] = /[\u{A0}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFEF}\u{10000}-\u{1FFFD}\u{20000}-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}\u{50000}-\u{5FFFD}\u{60000}-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}\u{90000}-\u{9FFFD}\u{A0000}-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}\u{D0000}-\u{DFFFD}\u{E1000}-\u{EFFFD}]/iou | ||||
|     REGEXEN[:valid_iri_iprivate] = /[\u{E000}-\u{F8FF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/iou | ||||
|     REGEXEN[:valid_url_query_chars] = /(?:#{REGEXEN[:valid_iri_ucschar]})|(?:#{REGEXEN[:valid_iri_iprivate]})|[a-z0-9!?\*'\(\);:&=\+\$\/%#\[\]\-_\.,~|@]/iou | ||||
|     REGEXEN[:valid_url_query_ending_chars] = /(?:#{REGEXEN[:valid_iri_ucschar]})|(?:#{REGEXEN[:valid_iri_iprivate]})|[a-z0-9_&=#\/\-]/iou | ||||
|     REGEXEN[:valid_url_path] = /(?: | ||||
|       (?: | ||||
|         #{REGEXEN[:valid_general_url_path_chars]}* | ||||
|  | ||||
| @ -59,6 +59,10 @@ describe Settings::DeletesController do | ||||
|           expect(user.account.reload).to be_suspended | ||||
|         end | ||||
| 
 | ||||
|         it 'does not create an email block' do | ||||
|           expect(CanonicalEmailBlock.block?(user.email)).to be false | ||||
|         end | ||||
| 
 | ||||
|         context 'when suspended' do | ||||
|           let(:user) { Fabricate(:user, account_attributes: { username: 'alice', suspended_at: Time.now.utc }) } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user