-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New profile architecture #299
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
У меня еще куча варнингов в икскоде, попробуй зайти через него и пофиксить, там довольно годные большинство.
Ты научился кстати наш линтер запускать с AppCode?
super.awakeFromNib() | ||
placeholderView.isSkeletonable = true | ||
|
||
let margin = Double(arc4random()) / 0xFFFFFFFF * 20.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
вот сейчас что-то странное с рандомом произошло, пояснишь?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
arc4random возвращает случайное число из [0; UInt32.max], делением просто получаем Double из [0; 1]
Лучше заменить 0xFFFFFFFF на UInt32.max, думаю.
// Copyright © 2018 Alex Karpov. All rights reserved. | ||
// | ||
|
||
enum ProfileMenuBlock: RawRepresentable, Equatable { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А почему не сделать просто :String вместо RawRepresentable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Потому что enum со значением.
} | ||
|
||
class ProfilePresenter { | ||
enum UserSeed { | ||
case other(id: Int) | ||
case `self`(id: Int) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ну слишком сильно ты любишь эту тему с ключевыми словами в кавычках)
может во избежание путаницы лучше сделать как-нибудь без этого?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не знаю, мне кажется здесь кавычки не особо мешают :)
} | ||
|
||
class ProfilePresenter { | ||
enum UserSeed { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А какое предназначение у UserSeed? Почему мы не можем использовать просто User-а ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Обсудили это уже, чтобы удобнее поддерживать 3 случая.
} | ||
|
||
func showStreakTimeSelection(startHour: Int) { | ||
// FIXME: strange picker injection. this vc logic should be in the presenter, i think |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пока нет роутинг слоя, мы не узнаем, как правильно))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если проще так - пусть будет так
customPresentViewController(streakTimePickerPresentr, viewController: vc, animated: true, completion: nil) | ||
} | ||
|
||
func requestNotificationsPermissions() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверь лишний раз плиз что с нотификациями ничего не сломалось. Понимаю, что это копипаст, но все равно страшновато
var pinsMapContentView: PinsMapBlockContentView? | ||
|
||
// Implementation of StreakNotificationsControlView in extension | ||
var presenterNotifications: StreakNotificationsControlPresenter? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
зачем тогда attach метод в экстеншне, если можно просто сетить это?
есть сомнения, нужен ли экстеншн, если у нас поле тут торчит (но это совсем мелочи и неважно, можешь как есть оставить)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Метод как альтернатива полю в протоколе.
Экстеншен здесь для того, чтобы вынести в него логику StreakNotificationsControlView. В данной реализации у нас сам ProfileViewController является StreakNotificationsControlView (из-за меню с блоками) и хотелось всю реализацию спрятать отдельно.
Stepic/ProfileViewController.swift
Outdated
} | ||
|
||
var streaksTooltip: Tooltip? | ||
@objc func settingsButtonPressed() { | ||
// Bad route injection :( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ииии так сойдет
func navigateToSettings() { | ||
self.performSegue(withIdentifier: "showSettings", sender: nil) | ||
} | ||
private func buildInfoExpandableBlock() -> ContentExpandableMenuBlock? { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А почему ты решил для профиля все это перенести из презентера во view?
В любом случае, с Settings должно быть консистентно - там сейчас до сих пор в SettingsPresenter инициализируются блоки
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, Settings и CodeSettings тоже нужно так сделать.
self.view = view | ||
} | ||
|
||
private var notificationTimeString: String? { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Надо разобраться будет со всеми подсчетами и форматированиями времени, мб в отдельный сервис их перенести. Сейчас это все хаотично раскидано по проекту.
Это вмердживаем для беты, остальные фиксы в отдельном PR-е |
Задача: #APPS-1883
Коротко для Release Notes, в формате «Сделали/Добавили/Исправили N»:
Добавили возможность открывать профили пользователей
Описание:
Весь код профиля переписан для более гибкого использования отдельных блоков (теперь каждый блок – модуль MVP).
TODO