diff --git a/MyPlayground.playground/Contents.swift b/MyPlayground.playground/Contents.swift
deleted file mode 100644
index 37b4371439..0000000000
--- a/MyPlayground.playground/Contents.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-import UIKit
-
-let regex = try! NSRegularExpression(pattern: ":[a-zA-Z0-9_]+:", options: [])
-
-func stripCustomEmoji(from string: String) -> String {
- let range = NSRange(location: 0, length: string.utf16.count)
- return regex.stringByReplacingMatches(in: string, options: [], range: range, withTemplate: "")
-}
-
-let result = stripCustomEmoji(from: ":sparkles_nb: 🦑 :dizzy_trans:")
-
-stripCustomEmoji(from: ":dizzy_trans:")
-stripCustomEmoji(from: " 🦑 :dizzy_trans:")
-stripCustomEmoji(from: " :dizzy_trans:")
diff --git a/MyPlayground.playground/contents.xcplayground b/MyPlayground.playground/contents.xcplayground
deleted file mode 100644
index 9f5f2f40c8..0000000000
--- a/MyPlayground.playground/contents.xcplayground
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Tusker.xcodeproj/project.pbxproj b/Tusker.xcodeproj/project.pbxproj
index ffacf2adb1..9c5c7fb805 100644
--- a/Tusker.xcodeproj/project.pbxproj
+++ b/Tusker.xcodeproj/project.pbxproj
@@ -129,7 +129,6 @@
D663626721360E2C00C9CBA2 /* PreferencesTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesTableViewController.swift; sourceTree = ""; };
D66362692136163000C9CBA2 /* PreferencesAdaptive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesAdaptive.swift; sourceTree = ""; };
D663626B21361C6700C9CBA2 /* Account+Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Account+Preferences.swift"; sourceTree = ""; };
- D663626D213629B300C9CBA2 /* MyPlayground.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = MyPlayground.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
D663626E213632A000C9CBA2 /* Compose.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Compose.storyboard; sourceTree = ""; };
D66362702136338600C9CBA2 /* ComposeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewController.swift; sourceTree = ""; };
D66362722136FFC600C9CBA2 /* UITextView+Placeholder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextView+Placeholder.swift"; sourceTree = ""; };
@@ -194,6 +193,135 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ D641C780213DD7C4004B4513 /* Screens */ = {
+ isa = PBXGroup;
+ children = (
+ D641C782213DD7F0004B4513 /* Main */,
+ D641C783213DD7FE004B4513 /* Onboarding */,
+ D641C781213DD7DD004B4513 /* Timeline */,
+ D641C784213DD819004B4513 /* Profile */,
+ D641C785213DD83B004B4513 /* Conversation */,
+ D641C786213DD852004B4513 /* Notifications */,
+ D641C787213DD862004B4513 /* Compose */,
+ D641C788213DD86D004B4513 /* Large Image */,
+ D641C789213DD87E004B4513 /* Preferences */,
+ );
+ path = Screens;
+ sourceTree = "";
+ };
+ D641C781213DD7DD004B4513 /* Timeline */ = {
+ isa = PBXGroup;
+ children = (
+ D6F953ED21251A0700CF0F2B /* Timeline.storyboard */,
+ D6F953EB212519E700CF0F2B /* TimelineTableViewController.swift */,
+ );
+ path = Timeline;
+ sourceTree = "";
+ };
+ D641C782213DD7F0004B4513 /* Main */ = {
+ isa = PBXGroup;
+ children = (
+ D6D4DDD3212518A000E1C4BB /* Main.storyboard */,
+ 04DACE8B212CB14B009840C4 /* MainTabBarViewController.swift */,
+ );
+ path = Main;
+ sourceTree = "";
+ };
+ D641C783213DD7FE004B4513 /* Onboarding */ = {
+ isa = PBXGroup;
+ children = (
+ D64D0AAE2128D954005A6F37 /* Onboarding.storyboard */,
+ D64D0AB02128D9AE005A6F37 /* OnboardingViewController.swift */,
+ );
+ path = Onboarding;
+ sourceTree = "";
+ };
+ D641C784213DD819004B4513 /* Profile */ = {
+ isa = PBXGroup;
+ children = (
+ D667E5E2213499F70057A976 /* Profile.storyboard */,
+ D667E5E621349D4C0057A976 /* ProfileTableViewController.swift */,
+ );
+ path = Profile;
+ sourceTree = "";
+ };
+ D641C785213DD83B004B4513 /* Conversation */ = {
+ isa = PBXGroup;
+ children = (
+ D667E5F22135BC260057A976 /* Conversation.storyboard */,
+ D667E5F42135BCD50057A976 /* ConversationViewController.swift */,
+ );
+ path = Conversation;
+ sourceTree = "";
+ };
+ D641C786213DD852004B4513 /* Notifications */ = {
+ isa = PBXGroup;
+ children = (
+ D641C770213CA9EC004B4513 /* Notifications.storyboard */,
+ D641C772213CAA25004B4513 /* NotificationsTableViewController.swift */,
+ );
+ path = Notifications;
+ sourceTree = "";
+ };
+ D641C787213DD862004B4513 /* Compose */ = {
+ isa = PBXGroup;
+ children = (
+ D663626E213632A000C9CBA2 /* Compose.storyboard */,
+ D66362702136338600C9CBA2 /* ComposeViewController.swift */,
+ );
+ path = Compose;
+ sourceTree = "";
+ };
+ D641C788213DD86D004B4513 /* Large Image */ = {
+ isa = PBXGroup;
+ children = (
+ D646C954213B364600269FB5 /* Transitions */,
+ D6C94D862139E62700CB5196 /* LargeImageViewController.swift */,
+ D6C94D842139DFD800CB5196 /* LargeImage.storyboard */,
+ );
+ path = "Large Image";
+ sourceTree = "";
+ };
+ D641C789213DD87E004B4513 /* Preferences */ = {
+ isa = PBXGroup;
+ children = (
+ D663626721360E2C00C9CBA2 /* PreferencesTableViewController.swift */,
+ D663626521360DD700C9CBA2 /* Preferences.storyboard */,
+ );
+ path = Preferences;
+ sourceTree = "";
+ };
+ D641C78A213DD926004B4513 /* Status */ = {
+ isa = PBXGroup;
+ children = (
+ D667E5E02134937B0057A976 /* StatusTableViewCell.xib */,
+ D6BED173212667E900F02DA0 /* StatusTableViewCell.swift */,
+ D663625C2135C74800C9CBA2 /* ConversationMainStatusTableViewCell.xib */,
+ D663625E2135C75500C9CBA2 /* ConversationMainStatusTableViewCell.swift */,
+ );
+ path = Status;
+ sourceTree = "";
+ };
+ D641C78B213DD92F004B4513 /* Profile Header */ = {
+ isa = PBXGroup;
+ children = (
+ D667E5E821349EE50057A976 /* ProfileHeaderTableViewCell.xib */,
+ D667E5EA21349EF80057A976 /* ProfileHeaderTableViewCell.swift */,
+ );
+ path = "Profile Header";
+ sourceTree = "";
+ };
+ D641C78C213DD937004B4513 /* Notifications */ = {
+ isa = PBXGroup;
+ children = (
+ D641C778213CAC56004B4513 /* ActionNotificationTableViewCell.xib */,
+ D641C776213CAA9E004B4513 /* ActionNotificationTableViewCell.swift */,
+ D641C77A213CB017004B4513 /* FollowNotificationTableViewCell.xib */,
+ D641C77C213CB024004B4513 /* FollowNotificationTableViewCell.swift */,
+ );
+ path = Notifications;
+ sourceTree = "";
+ };
D646C954213B364600269FB5 /* Transitions */ = {
isa = PBXGroup;
children = (
@@ -233,19 +361,12 @@
children = (
D64A0CD22132153900640E3B /* HTMLContentLabel.swift */,
D667E5EE2134C39F0057A976 /* StatusContentLabel.swift */,
- D667E5E02134937B0057A976 /* StatusTableViewCell.xib */,
- D6BED173212667E900F02DA0 /* StatusTableViewCell.swift */,
- D667E5E821349EE50057A976 /* ProfileHeaderTableViewCell.xib */,
- D667E5EA21349EF80057A976 /* ProfileHeaderTableViewCell.swift */,
- D663625C2135C74800C9CBA2 /* ConversationMainStatusTableViewCell.xib */,
- D663625E2135C75500C9CBA2 /* ConversationMainStatusTableViewCell.swift */,
- D6333B762138D94E00CE884A /* ComposeMediaView.swift */,
D6C94D882139E6EC00CB5196 /* AttachmentView.swift */,
- D641C778213CAC56004B4513 /* ActionNotificationTableViewCell.xib */,
- D641C776213CAA9E004B4513 /* ActionNotificationTableViewCell.swift */,
- D641C77A213CB017004B4513 /* FollowNotificationTableViewCell.xib */,
- D641C77C213CB024004B4513 /* FollowNotificationTableViewCell.swift */,
+ D6333B762138D94E00CE884A /* ComposeMediaView.swift */,
D641C77E213DC78A004B4513 /* InlineTextAttachment.swift */,
+ D641C78A213DD926004B4513 /* Status */,
+ D641C78B213DD92F004B4513 /* Profile Header */,
+ D641C78C213DD937004B4513 /* Notifications */,
);
path = Views;
sourceTree = "";
@@ -253,7 +374,6 @@
D6D4DDC3212518A000E1C4BB = {
isa = PBXGroup;
children = (
- D663626D213629B300C9CBA2 /* MyPlayground.playground */,
D6BED16E212663DA00F02DA0 /* SwiftSoup.framework */,
D6F953E6212519A400CF0F2B /* MastodonKit.framework */,
D6D4DDCE212518A000E1C4BB /* Tusker */,
@@ -283,9 +403,8 @@
D663626021360A9600C9CBA2 /* Preferences */,
D667E5F62135C2ED0057A976 /* Extensions */,
D6F953F121251A2F00CF0F2B /* Controllers */,
- D6F953E9212519B800CF0F2B /* View Controllers */,
+ D641C780213DD7C4004B4513 /* Screens */,
D6BED1722126661300F02DA0 /* Views */,
- D6F953EA212519BE00CF0F2B /* Storyboards */,
D6D4DDD6212518A200E1C4BB /* Assets.xcassets */,
D6D4DDD8212518A200E1C4BB /* LaunchScreen.storyboard */,
D6D4DDDB212518A200E1C4BB /* Info.plist */,
@@ -311,39 +430,6 @@
path = TuskerUITests;
sourceTree = "";
};
- D6F953E9212519B800CF0F2B /* View Controllers */ = {
- isa = PBXGroup;
- children = (
- D646C954213B364600269FB5 /* Transitions */,
- D6F953EB212519E700CF0F2B /* TimelineTableViewController.swift */,
- D64D0AB02128D9AE005A6F37 /* OnboardingViewController.swift */,
- 04DACE8B212CB14B009840C4 /* MainTabBarViewController.swift */,
- D667E5E621349D4C0057A976 /* ProfileTableViewController.swift */,
- D667E5F42135BCD50057A976 /* ConversationViewController.swift */,
- D663626721360E2C00C9CBA2 /* PreferencesTableViewController.swift */,
- D66362702136338600C9CBA2 /* ComposeViewController.swift */,
- D6C94D862139E62700CB5196 /* LargeImageViewController.swift */,
- D641C772213CAA25004B4513 /* NotificationsTableViewController.swift */,
- );
- path = "View Controllers";
- sourceTree = "";
- };
- D6F953EA212519BE00CF0F2B /* Storyboards */ = {
- isa = PBXGroup;
- children = (
- D6D4DDD3212518A000E1C4BB /* Main.storyboard */,
- D6F953ED21251A0700CF0F2B /* Timeline.storyboard */,
- D64D0AAE2128D954005A6F37 /* Onboarding.storyboard */,
- D667E5E2213499F70057A976 /* Profile.storyboard */,
- D667E5F22135BC260057A976 /* Conversation.storyboard */,
- D663626521360DD700C9CBA2 /* Preferences.storyboard */,
- D663626E213632A000C9CBA2 /* Compose.storyboard */,
- D6C94D842139DFD800CB5196 /* LargeImage.storyboard */,
- D641C770213CA9EC004B4513 /* Notifications.storyboard */,
- );
- path = Storyboards;
- sourceTree = "";
- };
D6F953F121251A2F00CF0F2B /* Controllers */ = {
isa = PBXGroup;
children = (
diff --git a/Tusker/Storyboards/Compose.storyboard b/Tusker/Screens/Compose/Compose.storyboard
similarity index 100%
rename from Tusker/Storyboards/Compose.storyboard
rename to Tusker/Screens/Compose/Compose.storyboard
diff --git a/Tusker/View Controllers/ComposeViewController.swift b/Tusker/Screens/Compose/ComposeViewController.swift
similarity index 100%
rename from Tusker/View Controllers/ComposeViewController.swift
rename to Tusker/Screens/Compose/ComposeViewController.swift
diff --git a/Tusker/Storyboards/Conversation.storyboard b/Tusker/Screens/Conversation/Conversation.storyboard
similarity index 100%
rename from Tusker/Storyboards/Conversation.storyboard
rename to Tusker/Screens/Conversation/Conversation.storyboard
diff --git a/Tusker/View Controllers/ConversationViewController.swift b/Tusker/Screens/Conversation/ConversationViewController.swift
similarity index 100%
rename from Tusker/View Controllers/ConversationViewController.swift
rename to Tusker/Screens/Conversation/ConversationViewController.swift
diff --git a/Tusker/Storyboards/LargeImage.storyboard b/Tusker/Screens/Large Image/LargeImage.storyboard
similarity index 100%
rename from Tusker/Storyboards/LargeImage.storyboard
rename to Tusker/Screens/Large Image/LargeImage.storyboard
diff --git a/Tusker/View Controllers/LargeImageViewController.swift b/Tusker/Screens/Large Image/LargeImageViewController.swift
similarity index 100%
rename from Tusker/View Controllers/LargeImageViewController.swift
rename to Tusker/Screens/Large Image/LargeImageViewController.swift
diff --git a/Tusker/View Controllers/Transitions/LargeImageExpandAnimationController.swift b/Tusker/Screens/Large Image/Transitions/LargeImageExpandAnimationController.swift
similarity index 100%
rename from Tusker/View Controllers/Transitions/LargeImageExpandAnimationController.swift
rename to Tusker/Screens/Large Image/Transitions/LargeImageExpandAnimationController.swift
diff --git a/Tusker/View Controllers/Transitions/LargeImageInteractionController.swift b/Tusker/Screens/Large Image/Transitions/LargeImageInteractionController.swift
similarity index 100%
rename from Tusker/View Controllers/Transitions/LargeImageInteractionController.swift
rename to Tusker/Screens/Large Image/Transitions/LargeImageInteractionController.swift
diff --git a/Tusker/View Controllers/Transitions/LargeImageShrinkAnimationController.swift b/Tusker/Screens/Large Image/Transitions/LargeImageShrinkAnimationController.swift
similarity index 100%
rename from Tusker/View Controllers/Transitions/LargeImageShrinkAnimationController.swift
rename to Tusker/Screens/Large Image/Transitions/LargeImageShrinkAnimationController.swift
diff --git a/Tusker/Storyboards/Base.lproj/Main.storyboard b/Tusker/Screens/Main/Base.lproj/Main.storyboard
similarity index 100%
rename from Tusker/Storyboards/Base.lproj/Main.storyboard
rename to Tusker/Screens/Main/Base.lproj/Main.storyboard
diff --git a/Tusker/View Controllers/MainTabBarViewController.swift b/Tusker/Screens/Main/MainTabBarViewController.swift
similarity index 100%
rename from Tusker/View Controllers/MainTabBarViewController.swift
rename to Tusker/Screens/Main/MainTabBarViewController.swift
diff --git a/Tusker/Storyboards/Notifications.storyboard b/Tusker/Screens/Notifications/Notifications.storyboard
similarity index 100%
rename from Tusker/Storyboards/Notifications.storyboard
rename to Tusker/Screens/Notifications/Notifications.storyboard
diff --git a/Tusker/View Controllers/NotificationsTableViewController.swift b/Tusker/Screens/Notifications/NotificationsTableViewController.swift
similarity index 100%
rename from Tusker/View Controllers/NotificationsTableViewController.swift
rename to Tusker/Screens/Notifications/NotificationsTableViewController.swift
diff --git a/Tusker/Storyboards/Onboarding.storyboard b/Tusker/Screens/Onboarding/Onboarding.storyboard
similarity index 100%
rename from Tusker/Storyboards/Onboarding.storyboard
rename to Tusker/Screens/Onboarding/Onboarding.storyboard
diff --git a/Tusker/View Controllers/OnboardingViewController.swift b/Tusker/Screens/Onboarding/OnboardingViewController.swift
similarity index 100%
rename from Tusker/View Controllers/OnboardingViewController.swift
rename to Tusker/Screens/Onboarding/OnboardingViewController.swift
diff --git a/Tusker/Storyboards/Preferences.storyboard b/Tusker/Screens/Preferences/Preferences.storyboard
similarity index 100%
rename from Tusker/Storyboards/Preferences.storyboard
rename to Tusker/Screens/Preferences/Preferences.storyboard
diff --git a/Tusker/View Controllers/PreferencesTableViewController.swift b/Tusker/Screens/Preferences/PreferencesTableViewController.swift
similarity index 100%
rename from Tusker/View Controllers/PreferencesTableViewController.swift
rename to Tusker/Screens/Preferences/PreferencesTableViewController.swift
diff --git a/Tusker/Storyboards/Profile.storyboard b/Tusker/Screens/Profile/Profile.storyboard
similarity index 100%
rename from Tusker/Storyboards/Profile.storyboard
rename to Tusker/Screens/Profile/Profile.storyboard
diff --git a/Tusker/View Controllers/ProfileTableViewController.swift b/Tusker/Screens/Profile/ProfileTableViewController.swift
similarity index 100%
rename from Tusker/View Controllers/ProfileTableViewController.swift
rename to Tusker/Screens/Profile/ProfileTableViewController.swift
diff --git a/Tusker/Storyboards/Timeline.storyboard b/Tusker/Screens/Timeline/Timeline.storyboard
similarity index 100%
rename from Tusker/Storyboards/Timeline.storyboard
rename to Tusker/Screens/Timeline/Timeline.storyboard
diff --git a/Tusker/View Controllers/TimelineTableViewController.swift b/Tusker/Screens/Timeline/TimelineTableViewController.swift
similarity index 100%
rename from Tusker/View Controllers/TimelineTableViewController.swift
rename to Tusker/Screens/Timeline/TimelineTableViewController.swift
diff --git a/Tusker/Views/ActionNotificationTableViewCell.swift b/Tusker/Views/Notifications/ActionNotificationTableViewCell.swift
similarity index 100%
rename from Tusker/Views/ActionNotificationTableViewCell.swift
rename to Tusker/Views/Notifications/ActionNotificationTableViewCell.swift
diff --git a/Tusker/Views/ActionNotificationTableViewCell.xib b/Tusker/Views/Notifications/ActionNotificationTableViewCell.xib
similarity index 100%
rename from Tusker/Views/ActionNotificationTableViewCell.xib
rename to Tusker/Views/Notifications/ActionNotificationTableViewCell.xib
diff --git a/Tusker/Views/FollowNotificationTableViewCell.swift b/Tusker/Views/Notifications/FollowNotificationTableViewCell.swift
similarity index 100%
rename from Tusker/Views/FollowNotificationTableViewCell.swift
rename to Tusker/Views/Notifications/FollowNotificationTableViewCell.swift
diff --git a/Tusker/Views/FollowNotificationTableViewCell.xib b/Tusker/Views/Notifications/FollowNotificationTableViewCell.xib
similarity index 100%
rename from Tusker/Views/FollowNotificationTableViewCell.xib
rename to Tusker/Views/Notifications/FollowNotificationTableViewCell.xib
diff --git a/Tusker/Views/ProfileHeaderTableViewCell.swift b/Tusker/Views/Profile Header/ProfileHeaderTableViewCell.swift
similarity index 100%
rename from Tusker/Views/ProfileHeaderTableViewCell.swift
rename to Tusker/Views/Profile Header/ProfileHeaderTableViewCell.swift
diff --git a/Tusker/Views/ProfileHeaderTableViewCell.xib b/Tusker/Views/Profile Header/ProfileHeaderTableViewCell.xib
similarity index 100%
rename from Tusker/Views/ProfileHeaderTableViewCell.xib
rename to Tusker/Views/Profile Header/ProfileHeaderTableViewCell.xib
diff --git a/Tusker/Views/ConversationMainStatusTableViewCell.swift b/Tusker/Views/Status/ConversationMainStatusTableViewCell.swift
similarity index 100%
rename from Tusker/Views/ConversationMainStatusTableViewCell.swift
rename to Tusker/Views/Status/ConversationMainStatusTableViewCell.swift
diff --git a/Tusker/Views/ConversationMainStatusTableViewCell.xib b/Tusker/Views/Status/ConversationMainStatusTableViewCell.xib
similarity index 100%
rename from Tusker/Views/ConversationMainStatusTableViewCell.xib
rename to Tusker/Views/Status/ConversationMainStatusTableViewCell.xib
diff --git a/Tusker/Views/StatusTableViewCell.swift b/Tusker/Views/Status/StatusTableViewCell.swift
similarity index 100%
rename from Tusker/Views/StatusTableViewCell.swift
rename to Tusker/Views/Status/StatusTableViewCell.swift
diff --git a/Tusker/Views/StatusTableViewCell.xib b/Tusker/Views/Status/StatusTableViewCell.xib
similarity index 100%
rename from Tusker/Views/StatusTableViewCell.xib
rename to Tusker/Views/Status/StatusTableViewCell.xib