@@ -3,7 +3,7 @@ Pod::Spec.new do |s| | |||
s.name = 'MeetupIdX' | |||
s.version = '2023.12.28' | |||
s.license = 'IVCS' | |||
s.summary = 'Окно ввода ID мероприятия' | |||
s.summary = 'Ввод ID мероприятия' | |||
s.homepage = 'IVCS' | |||
s.author = 'IVCS' | |||
s.source = { :git => 'https://fake.com/FAKE.git', :tag => s.version } | |||
@@ -0,0 +1,115 @@ | |||
// ВНИМАНИЕ Сгенерировано автоматом из файла MeetupId.yml | |||
// ВНИМАНИЕ Не менять руками! | |||
import BusX | |||
import Combine | |||
import CordX | |||
import Foundation | |||
import UIKit | |||
// MARK: - Context | |||
public protocol MeetupIdContext { | |||
var textApp: MPAK.Recent<String> { get } | |||
var textUI: MPAK.Recent<String> { get } | |||
} | |||
// MARK: - Controller | |||
extension MeetupId { | |||
final class Controller: MPAK.Controller<MeetupId.Model> { | |||
init() { | |||
super.init( | |||
MeetupId.Model(), | |||
debugClassName: "MeetupICtrl", | |||
debugLog: { aelog($0) } | |||
) | |||
} | |||
} | |||
// MARK: - Model | |||
public struct Model: MeetupIdContext { | |||
public var textApp: MPAK.Recent<String> = .init("") | |||
public var textUI: MPAK.Recent<String> = .init("") | |||
} | |||
// MARK: - Service | |||
public final class Service { | |||
let ctrl = Controller() | |||
let world: World | |||
var subscriptions = [AnyCancellable]() | |||
static private(set) weak var singleton: Service? | |||
public init(_ world: World) { | |||
self.world = world | |||
Self.singleton = self | |||
SectionGenerated.setupPlatform(ctrl, self, world) | |||
} | |||
} | |||
// MARK: - World | |||
public struct World { | |||
let textApp = PassthroughSubject<String, Never>() | |||
let textUI = PassthroughSubject<String, Never>() | |||
public init( | |||
) { | |||
} | |||
} | |||
enum SectionGenerated { | |||
// MARK: - SectionGenerated Service | |||
static func setupPlatform( | |||
_ ctrl: Controller, | |||
_ service: Service, | |||
_ world: World | |||
) { | |||
// MARK: - SectionGenerated Service Actions | |||
// MARK: - SectionGenerated Service Pipes | |||
ctrl.pipeValue( | |||
dbg: "textA", | |||
sub: nil, | |||
K.meetupIdTextApp.eraseToAnyPublisher(), | |||
{ | |||
$0.textApp.value = $1 | |||
$0.textApp.isRecent = true | |||
}, | |||
{ m, _ in m.textApp.isRecent = false } | |||
) | |||
ctrl.pipeValue( | |||
dbg: "textUI", | |||
sub: nil, | |||
K.meetupIdTextUI.eraseToAnyPublisher(), | |||
{ | |||
$0.textUI.value = $1 | |||
$0.textUI.isRecent = true | |||
}, | |||
{ m, _ in m.textUI.isRecent = false } | |||
) | |||
} | |||
} | |||
} |
@@ -4,6 +4,9 @@ def generateImports(c): | |||
if c.path != c.module: | |||
parent = c.path.split("/")[0] | |||
fileName = fileName.replace(f"{c.module}/src/../{c.module}", parent) | |||
# Для обычного модуля с окончание X учитываем такое же название podspec. | |||
if c.path[-1] == "X": | |||
fileName = fileName.replace(f"{c.module}.podspec", f"{c.module}X.podspec") | |||
lines = c.readFile(fileName) | |||
items = ["Combine", "Foundation", "UIKit"] | |||
@@ -1,168 +1 @@ | |||
ADFSRedirection | |||
ApiHostSave | |||
C4 | |||
C4/C4Ava | |||
C4/C4Attributes | |||
C4/C4Call | |||
C4/C4Canvas | |||
C4/C4Cleanup | |||
C4/C4Content | |||
C4/C4Data | |||
C4/C4Date | |||
C4/C4DeleteChat | |||
C4/C4Empty | |||
C4/C4FastScrollBtn | |||
C4/C4FeatureToggle | |||
C4/C4Group | |||
C4/C4LastMessage | |||
C4/C4LeaveChat | |||
C4/C4Navigation | |||
C4/C4NotificationStatus | |||
C4/C4QuickActions | |||
C4/C4Paging | |||
C4/C4Reload | |||
C4/C4Sorting | |||
C4/C4Status | |||
C4/C4SetNotifications | |||
C4/C4TextInputSearch | |||
C4/C4TextInputSearchCanvas | |||
C4/C4Title | |||
C4/C4Typing | |||
C4/C4Unread | |||
C4/C4SearchAttributes | |||
C4/C4SearchContent | |||
C4/C4SearchData | |||
C4/C4SearchEmpty | |||
C4/C4SearchPaging | |||
C4/C4SearchSorting | |||
ChatCallError | |||
ChatsAccessVerification | |||
ChatTitle | |||
ConnectionStatus | |||
IPC | |||
Login/LoginGodActivity | |||
Login/LoginStart | |||
LoginADFSAuth | |||
LoginADFSButtons | |||
LoginADFSProviders | |||
LoginADFSWebViewControlPanel | |||
LoginADFSWebView | |||
LoginMeetupId | |||
LoginMeetupIdBtn | |||
LoginHost | |||
M5Buttons | |||
M5I/M5ICanvas | |||
M5I/M5ICloseBtn | |||
M5I/M5IConferenceType | |||
M5I/M5IConferenceNumber | |||
M5I/M5IData | |||
M5I/M5IDeleteBtn | |||
M5I/M5IDescription | |||
M5I/M5IDetails | |||
M5I/M5IError | |||
M5I/M5IGuestLink | |||
M5I/M5IInviteResponseBtn | |||
M5I/M5IJoinBtn | |||
M5I/M5IJoinInfo | |||
M5I/M5ILinksBtn | |||
M5I/M5ILoading | |||
M5I/M5IMenu | |||
M5I/M5IReload | |||
M5I/M5IStatus | |||
M5I/M5IStatusAddon | |||
M5I/M5ITitle | |||
M5I/M5IType | |||
M5I/M5ITypeName | |||
M5I/M5ITypeUpdate | |||
M5ILinks/M5ILinksCanvas | |||
M5ILinks/M5ILinksCloseBtn | |||
M5ILinks/M5ILinksJoinByGuest | |||
M5ILinks/M5ILinksJoinByID | |||
M5ILinks/M5ILinksJoinByModerator | |||
M5ILinks/M5ILinksJoinByPhone | |||
M5ILinks/M5ILinksJoinBySpeaker | |||
M5ILinks/M5ILinksJoinByVvoip | |||
M5IPush/M5IPushExitAlert | |||
M5IPush/M5IPushNavigation | |||
M5IUsers/M5IUsersAttributes | |||
M5IUsers/M5IUsersAva | |||
M5IUsers/M5IUsersData | |||
M5IUsers/M5IUsersCleanup | |||
M5IUsers/M5IUsersContent | |||
M5IUsers/M5IUsersCount | |||
M5IUsers/M5IUsersCountOnline | |||
M5IUsers/M5IUsersInvitation | |||
M5IUsers/M5IUsersLoading | |||
M5IUsers/M5IUsersLoadingError | |||
M5IUsers/M5IUsersPaging | |||
M5IUsers/M5IUsersReload | |||
M5IUsers/M5IUsersRole | |||
M5IUsers/M5IUsersSorting | |||
M5IUsers/M5IUsersTitle | |||
M5IUsers/M5IUsersType | |||
M5ChatParticipantOnline | |||
M5Media/M5MediaData | |||
M5Media/M5MediaAttributes | |||
M5Media/M5MediaStatus | |||
M5Media/M5PresentationInfo | |||
M5Media/M5ScreenShare | |||
M5Media/M5SpeakerInfo | |||
M5Media/M5Streaming | |||
M5Media/M5VideoQuality | |||
M5Typing | |||
MeetupCallLogoutAlert | |||
MeetupLink/MeetupLinkSpinner | |||
MeetupGoToAnotherMeetupLink | |||
MeetupLinkApiHostRollback | |||
MeetupLinkLaunch | |||
Meetups/MeetupsAttributes | |||
Meetups/MeetupsData | |||
Meetups/MeetupsEmpty | |||
Meetups/MeetupsPaging | |||
Ori | |||
Password | |||
PasswordCanvas | |||
PasswordFeatureToggle | |||
ProtoM5Files | |||
Rooms | |||
RoomsAttributes | |||
RoomsAva | |||
RoomsCanvas | |||
RoomsCleanup | |||
RoomsData | |||
RoomsDuration | |||
RoomsEmpty | |||
RoomsJoinBtn | |||
RoomsLastDate | |||
RoomsOrganizer | |||
RoomsPages | |||
RoomsReload | |||
RoomsSorting | |||
RoomsTitle | |||
RoomsUsers | |||
S5Panel/S5PanelMeetups | |||
S5Panel/S5PanelRooms | |||
SystemInfo | |||
TimeDistance | |||
Toast | |||
WindowPriority | |||
MeetupIdX |
@@ -3,5 +3,8 @@ def modulePaths(name): | |||
if len(parts) == 2: | |||
return (name, parts[1]) | |||
else: | |||
return (name, name) | |||
module = name | |||
if name[-1] == "X": | |||
module = name[:-1] | |||
return (name, module) | |||