A collection of commands that change the Arc Browser icon on macOS.
| Theme | Command |
|---|---|
| Candy Arc | defaults write company.thebrowser.Browser currentAppIconName candy |
| export const getThumbnail = (id, size = 300) => | |
| `https://drive.google.com/thumbnail?id=${id}&sz=${size}`; | |
| export const getIcon = (mimeType) => | |
| `https://drive-thirdparty.googleusercontent.com/256/type/${mimeType}`; | |
| export const getFile = (id) => `https://drive.google.com/uc?id=${id}`; | |
| const downloadFile = (id) => |
| import { useNotificationService } from './hooks'; | |
| function App() { | |
| useNotificationService(); | |
| ... | |
| } |
| import Foundation | |
| extension Data { | |
| var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription | |
| guard let object = try? JSONSerialization.jsonObject(with: self, options: []), | |
| let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]), | |
| let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil } | |
| return prettyPrintedString | |
| } |
| // define a variable to store initial touch position | |
| var initialTouchPoint: CGPoint = CGPoint(x: 0,y: 0) | |
| @IBAction func panGestureRecognizerHandler(_ sender: UIPanGestureRecognizer) { | |
| let touchPoint = sender.location(in: self.view?.window) | |
| if sender.state == UIGestureRecognizerState.began { | |
| initialTouchPoint = touchPoint | |
| } else if sender.state == UIGestureRecognizerState.changed { | |
| if touchPoint.y - initialTouchPoint.y > 0 { |
| extension Int { | |
| func formatUsingAbbrevation () -> String { | |
| let numFormatter = NSNumberFormatter() | |
| typealias Abbrevation = (threshold:Double, divisor:Double, suffix:String) | |
| let abbreviations:[Abbrevation] = [(0, 1, ""), | |
| (1000.0, 1000.0, "K"), | |
| (100_000.0, 1_000_000.0, "M"), | |
| (100_000_000.0, 1_000_000_000.0, "B")] |
| // You have a very very large video file you need to upload to a server while your app is backgrounded. | |
| // Solve by using URLSession background functionality. I will here use Alamofire to enable multipart upload. | |
| class Networking { | |
| static let sharedInstance = Networking() | |
| public var sessionManager: Alamofire.SessionManager // most of your web service clients will call through sessionManager | |
| public var backgroundSessionManager: Alamofire.SessionManager // your web services you intend to keep running when the system backgrounds your app will use this | |
| private init() { | |
| self.sessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.default) | |
| self.backgroundSessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.background(withIdentifier: "com.lava.app.backgroundtransfer")) |
| func abbreviateNumber(num: NSNumber) -> String { | |
| // less than 1000, no abbreviation | |
| if num < 1000 { | |
| return "\(num)" | |
| } | |
| // less than 1 million, abbreviate to thousands | |
| if num < 1000000 { | |
| var n = Double(num); | |
| n = Double( floor(n/100)/10 ) |