Skip to main content

Create Short Video

Overview​

The Create Short Video Screen (LMFeedCreateShortVideoScreen) provides an interface for creating and editing short-form video content. It allows users to add video content, write descriptions, and mention other users in their posts.

File Location:
LMFeedCreateShortVideoScreen.swift

Functionality​

Protocols Implemented​

LMFeedCreateShortVideoViewModelProtocol​

Defines methods that are triggered from the view model and are implemented by the view controller using it

  • showVideo(video: [LMFeedMediaProtocol]): Called when video data is available to be displayed. Updates the video preview with the provided video data.
  • resetMediaView(): Called to clear and reset the video preview view to its initial state.

LMFeedTaggingTextViewProtocol​

Defines methods that are triggered from the tagging text view and are implemented by the view controller using it

  • mentionStarted(with text: String): Called when a user starts typing a mention (using '@'). Shows the tagging view and initiates user search.
  • mentionStopped(): Called when a user stops typing a mention. Hides the tagging view and stops user search.
  • contentHeightChanged(): Called when the content height of the text view changes. Updates the create button state.

LMFeedTaggedUserFoundProtocol​

Defines methods that are triggered when a user is selected from the tagging list

  • userSelected(with route: String, and userName: String): Called when a user is selected from the tagging list. Adds the selected user to the text view.
  • updateHeight(with height: CGFloat): Called to update the height of the tagging view based on its content.

UI Components​

  • containerStackView: A vertical stack view containing the scroll view and add media stack.
  • scrollView: A scroll view that contains the post creation elements.
  • scrollStackView: A vertical stack view within the scroll view for content organization.
  • inputTextView: A text view for entering post content with user mention support.
  • videoPreview: A collection view for displaying video content.
  • createPostButton: A button for submitting the video post.
  • taggingView: A view for displaying and selecting mentioned users.

Data Variables​

  • videoAttachmentData: An array of LMFeedMediaProtocol objects containing video data.
  • videoCollectionViewHeightConstraint: A constraint for the video preview's height.
  • taggingViewHeight: A constraint for the tagging view's height.

Methods​

  • setupViews(): Configures the initial view hierarchy.
  • setupLayouts(): Sets up the layout constraints for all UI components.
  • setupActions(): Configures action handlers for UI elements.
  • setupInitialView(): Initializes the view state.
  • observeCreateButton(): Updates the create button's enabled state based on content.

Action Handlers​

  • didTapCreateButton(): Called when the create post button is tapped.

Customization​

CustomCreateShortVideoScreen.swift
class CustomCreateShortVideoScreen: LMFeedCreateShortVideoScreen {
override func setupAppearance() {
super.setupAppearance()
containerView.backgroundColor = .systemBackground
inputTextView.backgroundColor = .secondarySystemBackground
}
}
AppDelegate.swift
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
Components.shared.createShortVideoScreen = CustomCreateShortVideoScreen.self
// ...
return true
}