@@ -3,7 +3,7 @@ Pod::Spec.new do |s| | |||||
s.name = 'MeetupIdX' | s.name = 'MeetupIdX' | ||||
s.version = '2023.12.28' | s.version = '2023.12.28' | ||||
s.license = 'IVCS' | s.license = 'IVCS' | ||||
s.summary = 'Окно ввода ID мероприятия' | |||||
s.summary = 'Ввод ID мероприятия' | |||||
s.homepage = 'IVCS' | s.homepage = 'IVCS' | ||||
s.author = 'IVCS' | s.author = 'IVCS' | ||||
s.source = { :git => 'https://fake.com/FAKE.git', :tag => s.version } | 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: | if c.path != c.module: | ||||
parent = c.path.split("/")[0] | parent = c.path.split("/")[0] | ||||
fileName = fileName.replace(f"{c.module}/src/../{c.module}", parent) | 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) | lines = c.readFile(fileName) | ||||
items = ["Combine", "Foundation", "UIKit"] | 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: | if len(parts) == 2: | ||||
return (name, parts[1]) | return (name, parts[1]) | ||||
else: | else: | ||||
return (name, name) | |||||
module = name | |||||
if name[-1] == "X": | |||||
module = name[:-1] | |||||
return (name, module) | |||||