Skip to main content
Glama
ListView.ViewModel.swift1.78 kB
import SwiftUI extension ListView { @Observable class ViewModel: ObservableObject { var todoItems: [TodoItem] = TodoItem.sampleData var newItemText = "" var isAddingNewItem = false func toggleItem(_ id: UUID) { if let index = todoItems.firstIndex(where: { $0.id == id }) { todoItems[index].isCompleted.toggle() } } func moveItems(from source: IndexSet, to destination: Int) { todoItems.move(fromOffsets: source, toOffset: destination) } func deleteItems(at offsets: IndexSet) { todoItems.remove(atOffsets: offsets) } func addNewItem() { guard !newItemText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { return } let newItem = TodoItem(text: newItemText.trimmingCharacters(in: .whitespacesAndNewlines)) todoItems.append(newItem) newItemText = "" isAddingNewItem = false } func cancelAddingItem() { newItemText = "" isAddingNewItem = false } func startAddingNewItem() { isAddingNewItem = true } } } // MARK: - Sample Model struct TodoItem: Identifiable { let id = UUID() var text: String var isCompleted: Bool = false } extension TodoItem { static let sampleData = [ TodoItem(text: "Buy groceries"), TodoItem(text: "Walk the dog"), TodoItem(text: "Finish project"), TodoItem(text: "Call mom"), TodoItem(text: "Read a book") ] }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zillow/auto-mobile'

If you have feedback or need assistance with the MCP directory API, please join our Discord server