ggoraa

ggoraa

15 y.o. Junior Swift Multiplatform(iOS, iPadOS, macOS, watchOS, tvOS) developer from Ukraine. Loves electric unicycles(EUCs), FPV drones, and much more!

Member Since 1 year ago

@Dynamium, Ukraine

Experience Points
20
follower
Lessons Completed
63
follow
Lessons Completed
270
stars
Best Reply Awards
21
repos

1900 contributions in the last year

Pinned
⚡ A (really) native and powerful macOS Telegram client built using SwiftUI, optimized for moderating large communities and personal use.
⚡ Build system for Garmin ConnectIQ. Simple, fast, powerful!
⚡ A Swift package for type-safe interactions with Yeelight API.
⚡ A static analyser for Monkey C language.
Activity
Jan
22
17 hours ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

feat: dependency configuration updates

commit sha: d547e29f6b6ed2be4c3e2889d2af4e6ffedfd0f0

push time in 37 minutes ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

feat: removed some unused files

commit sha: cd8c0781bac0fd3b28f2f00a15f759d8b2d8ccfc

push time in 5 hours ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

fix: fix deployment target

commit sha: ecbe2c183b93bb2b595b872a5639ebfb3a88497d

push time in 7 hours ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

fix: some small bug&warning fixes

commit sha: 23762ee215072f6dee2ba31eb5e175e8bef1c377

push time in 7 hours ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

ci: added a dummy swift source file to shut the build system up

commit sha: acc337388e7892d4430553cfd9ccba5f12738ce7

push time in 7 hours ago
Jan
21
1 day ago
pull request

ggoraa pull request ggoraa/moc

ggoraa
ggoraa

Chat UI

Now this PR will really bring messages

Activity icon
created branch

ggoraa in ggoraa/moc create branch chat_ui

createdAt 18 hours ago
push

ggoraa push ggoraa/moc

ggoraa
ggoraa

Preferences (#35)

  • feat: removed Preferences dependency

  • feat: replaced all Preferences lib usages with native SwiftUI views

  • feat: small finishing touches

commit sha: 679e5495510f0c66f5854ddb6be8127235a09f4f

push time in 18 hours ago
Activity icon
delete

ggoraa in ggoraa/moc delete branch preferences

deleted time in 18 hours ago
Activity icon
issue

ggoraa issue ggoraa/moc

ggoraa
ggoraa

Replace Preferences library usage with native to SwiftUI Form views

As in title I didn't realise there is a built in way to do preferences UI, so here we are

push

ggoraa push ggoraa/moc

ggoraa
ggoraa

feat: removed Preferences dependency

ggoraa
ggoraa

feat: replaced all Preferences lib usages with native SwiftUI views

ggoraa
ggoraa

feat: small finishing touches

commit sha: 21a878c7ff20ac50c82c0ae0fd1e08a10516aa8e

push time in 18 hours ago
Activity icon
created branch

ggoraa in ggoraa/moc create branch preferences

createdAt 18 hours ago
pull request

ggoraa pull request ggoraa/moc

ggoraa
ggoraa

New architecture

Long story short, all direct tdApi calls are replaced by wrappers like ChatDataSource, and injected into views using Resolver and Dependency Injection.

push

ggoraa push ggoraa/moc

ggoraa
ggoraa

New architecture (#31)

  • feat: created Backend module for encapsulating tdlib logic

  • feat: created base protocol DataSourcable

  • feat: added static property shared to TdApi

  • feat: created ChatDataSourcable protocol

  • feat: created class ChatDataSource, mainly for ChatView

  • feat: implemented injection on ChatDataSource

  • feat: added MockChatDataSource and renamed ChatDataSource to TdChatDataSource

  • feat: started implementing usage of ChatDataSource

  • refactor: moved NotificationKeys to Backend module

  • refactor: move update handler to Backend module

  • fix: fix dependency bug in Backend module

  • feat: implemented data source for login view

  • feat: implemented data source for chatview

  • feat: implemented datasource for accounts pref view

  • xcode: stuff

  • feat: moved KeychainSwift to Backend module

  • feat: first (maybe) working version of data sources

  • feat: created ChatViewModel

  • feat: removed unused Secret.swift.gyb in root module

  • feat: UI-wise data source updates

  • feat: added AccountsPrefViewModel

  • feat: implemented AccountsPrefDataSource

  • refactor: move tdApi var to the top in TdChatDataSource

  • feat: add new data sources to injection

  • feat: updated API of AccountsPrefDataSource

  • feat: entered final stages of implementation

  • other: some additional stuff

  • feat: first attempt at fixing UI not updating properly

  • refactor: giant naming refactor for backend

now data sources are called data repositories

  • refactor: preferences refactor

  • xcode: preferences refactor

  • refactor: one more preferences refactor

  • refactor: One More Grand Refactor this time DataRepository is replaced with Service

  • fix: oh, forgot to rename the last one

  • feat: finally finished the move

commit sha: 4c2ece60205e61eff598b25daf62cd3347b73483

push time in 18 hours ago
Activity icon
delete

ggoraa in ggoraa/moc delete branch new_arch

deleted time in 18 hours ago
Activity icon
issue

ggoraa issue ggoraa/moc

ggoraa
ggoraa

Implement better architecture

Let's use Resolver library to it's final potential, shall we? Direct tdApi calls in views are not good, in fact, it really bad. How it should be replaced:

Example: we have a chat view. It should show messages, and populate the status bar and other things. For that, there should be a variable:

@Injected private var dataSource: ChatDataSourcable

Where ChatDataSourcable is:

protocol ChatDataSourcable

Why? Simple: Previews and testing! We can easily create something like:

final class TdChatDataSource: ChatDataSourcable

Which will have a real implementation with real data, and also:

final class MockChatDataSource: ChatDataSourcable

For using in Previews and testing. Each instance can be easily injected using:

Resolver.register { TdChatDataSource() as ChatDataSourcable }

I think benefits are huge for this one :D

push

ggoraa push ggoraa/moc

ggoraa
ggoraa

fix: oh, forgot to rename the last one

ggoraa
ggoraa

feat: finally finished the move

commit sha: 284d90f7aef27227cb6af00356f2eb41b6c258b8

push time in 18 hours ago
Activity icon
issue

ggoraa issue comment ggoraa/moc

ggoraa
ggoraa

Implement better architecture

Let's use Resolver library to it's final potential, shall we? Direct tdApi calls in views are not good, in fact, it really bad. How it should be replaced:

Example: we have a chat view. It should show messages, and populate the status bar and other things. For that, there should be a variable:

@Injected private var dataSource: ChatDataSourcable

Where ChatDataSourcable is:

protocol ChatDataSourcable

Why? Simple: Previews and testing! We can easily create something like:

final class TdChatDataSource: ChatDataSourcable

Which will have a real implementation with real data, and also:

final class MockChatDataSource: ChatDataSourcable

For using in Previews and testing. Each instance can be easily injected using:

Resolver.register { TdChatDataSource() as ChatDataSourcable }

I think benefits are huge for this one :D

ggoraa
ggoraa

oh wait these DataSources and Services are not needed, we could just encapsulate logic in View Models well, it makes everything simpler what is it, the fourth time I am refactoring the entire thing? 😅

push

ggoraa push ggoraa/moc

ggoraa
ggoraa

refactor: preferences refactor

ggoraa
ggoraa

xcode: preferences refactor

ggoraa
ggoraa

refactor: one more preferences refactor

ggoraa
ggoraa

refactor: One More Grand Refactor this time DataRepository is replaced with Service

commit sha: ac3ece5725b6b930e3536ad868cb78f6f1c5352c

push time in 19 hours ago
Activity icon
issue

ggoraa issue ggoraa/moc

ggoraa
ggoraa

Replace Preferences library usage with native to SwiftUI Form views

As in title I didn't realise there is a built in way to do preferences UI, so here we are

push

ggoraa push ggoraa/moc

ggoraa
ggoraa

Create xcode.yml (#33)

  • Create xcode.yml

  • Update xcode.yml

  • Update xcode.yml

  • Update xcode.yml

commit sha: f0477670bb4c10d526a0124d78c876ceead6c963

push time in 23 hours ago
Previous